react / react/react-native

Using absolute positioning, when the parent element has padding, the width height of the current element is incorrectly laid out using a percentage layout

Ouverte
#46,392 13 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Issue: Author Provided Repro
Langage dominant
C++
Étoiles
127k
Forks
25.3k
Merge moyen
1 j 23 h
PR mergées (30 j)
4

Description

Description
/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 *
 * @format
 */

import React from 'react';
import {
  SafeAreaView,
  ScrollView,
  StatusBar,
  useColorScheme,
  View,
} from 'react-native';

function App(): React.JSX.Element {
  const isDarkMode = useColorScheme() === 'dark';

  const backgroundStyle = {
    backgroundColor: '#eee',
  };

  return (
    <SafeAreaView style={backgroundStyle}>
      <StatusBar
        barStyle={isDarkMode ? 'light-content' : 'dark-content'}
        backgroundColor={backgroundStyle.backgroundColor}
      />
      <ScrollView>
        <View
          style={{
            backgroundColor: '#000',
            height: 300,
            paddingTop: 200,
            paddingLeft: 200
          }}>
          <View style={{
            position: 'absolute',
            // width height 100%会排除父元素的padding
            width: '100%', height: '100%', left: 0, top: 0,
            backgroundColor: '#666'
          }} />
        </View>
      </ScrollView>
    </SafeAreaView>
  );
}

export default App;

WX20240909-101807

In the new architecture, I set the height to 100%, but its height is not equal to the height of the parent container, but will subtract the padding of the parent container

Steps to reproduce

1

React Native Version

0.75.2

Affected Platforms

Runtime - Android, Runtime - iOS

Areas

Fabric - The New Renderer

Output of npx react-native info
System:
  OS: macOS 14.5
  CPU: (16) x64 Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
  Memory: 35.26 MB / 32.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 18.20.3
    path: /private/var/folders/rf/gd60z12164z72bny7z_0d4f80000gn/T/xfs-de932bea/node
  Yarn:
    version: 3.6.4
    path: /private/var/folders/rf/gd60z12164z72bny7z_0d4f80000gn/T/xfs-de932bea/yarn
  npm:
    version: 10.7.0
    path: ~/.nvm/versions/node/v18.20.3/bin/npm
  Watchman:
    version: 2024.07.15.00
    path: /usr/local/bin/watchman
Managers:
  CocoaPods:
    version: 1.15.2
    path: /usr/local/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.5
      - iOS 17.5
      - macOS 14.5
      - tvOS 17.5
      - visionOS 1.2
      - watchOS 10.5
  Android SDK: Not Found
IDEs:
  Android Studio: 2024.1 AI-241.18034.62.2412.12266719
  Xcode:
    version: 15.4/15F31d
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.11
    path: /usr/bin/javac
  Ruby:
    version: 2.6.10
    path: /usr/bin/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.3.1
    wanted: 18.3.1
  react-native:
    installed: 0.75.1
    wanted: 0.75.1
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: true
iOS:
  hermesEnabled: Not found
  newArchEnabled: false
Stacktrace or Logs
empty
Reproducer

https://github.com/ShaoGongBra/rn-test

Screenshots and Videos

No response

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par le reproducteur rn-test lié et par le composant App d’exemple de l’issue, en utilisant React Native 0.75.2 avec Fabric activé sur Android et iOS. Reproduisez le comportement du dimensionnement en pourcentage avec un parent doté de padding, puis suivez le chemin de layout de Fabric afin de déterminer à quel endroit les dimensions du child divergent. Le travail est terminé lorsque la largeur et la hauteur à 100 % du child absolu correspondent, comme prévu, au conteneur parent.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, react-native
Domaine
mobile
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.