Ich endlich aufgewertet reagieren nativer auf 0,42 , die die Einführung umfasst flexGrow
, flexShrink
und flexBasis
und die Änderung (oder fix), wieflex
gemacht wird.
Ich bekomme immer wieder Fehler wie:
Die Ansicht wurde mit explizit eingestellter Breite / Höhe, jedoch mit einer FlexBasis von 0 gerendert. (Dies kann durch Ändern von flex: in flexGrow behoben werden :) Ansicht:
Kann jemand den Unterschied zwischen flex: 1
vs erklären flexGrow: 1
. Wenn ich das eine oder andere auf eine Ansicht anwende, scheint es verschiedene Dinge zu tun, aber sollte es nicht dasselbe tun?
react-native
flexbox
flex-grow
Dev01
quelle
quelle
Antworten:
Hier ist ein Testcode zu beachten:
Hier ist ein Screenshot des obigen Codes:
Hinzugefügt
width
undheight
:Hier ist ein Screenshot des obigen Codes:
flex: 0
(Standard)flex: 0
width
undheight
Requisiten bemessen sein, aber es scheint zum Inhalt zu passen, wenn diese nicht festgelegt sind.flex: 0, flexBasis: {{px}}
flexBasis
flex: 0, flexGrow: 1
flex: 0
undflexGrow: 1
; Dies entspricht dem Hinzufügen der Größe des Inhalts (im obigen Beispiel ist es a) zur Größe eines Elements, auf das festgelegt istflex: 1
. Es ist ähnlich,flex: 1, flexBasis: 10
außer dass Sie anstelle einer Anzahl von Pixeln die Größe des Inhalts hinzufügen.flex: 0, flexShrink: 1
flex: 0
undflexShrink: 1
scheint das Element die Größe des Inhalts anzunehmen, mit anderen Worten, es ist dasselbe wie nurflex: 0
. Ich wette, es gibt Situationen, in denen es größer als der Inhalt wäre, aber das habe ich noch nicht gesehen.flex: 0, flexGrow: 1, flexBasis: {{px}}
flex: 0, flexGrow: 1
außer dass anstelle des Hinzufügens der Inhaltsgröße zu einemflex: 1
Element die angegebene Anzahl von Pixeln hinzugefügt wird .flex: 0, flexShrink: 1, flexBasis: {{px}}
flex: 0, flexBasis: {{px}}
.flex: 0, height: {{px}}
flex: 0
,height
wird behandelt wieflexBasis
. Wenn beide aheight
und gesetztflexBasis
sind,height
wird ignoriert.flex: 1
flex: 1
flex: 1, flexBasis: {{px}}
flex: 1
undflexBasis: {{px}}
; Der Wert vonflexBasis
wird zur Größe des Elements addiert. Mit anderen Worten, es ist, als würde man einflex: 1
Element nehmen und die Anzahl der durch festgelegten Pixel hinzufügenflexBasis
. Wenn also einflex: 1
Element 50 Pixel groß ist und Sie hinzufügen, istflexBasis: 20
das Element jetzt 70 Pixel groß.flex: 1, flexGrow: 1
flex: 1, flexShrink: 1
flex: 1, flexGrow: 1, flexBasis: {{px}}
flex: 1, flexBasis: {{px}}
daflexGrow
ignoriert wird.flex: 1, flexShrink: 1, flexBasis: {{px}}
flex: 1, flexBasis: {{px}}
daflexShrink
ignoriert wird.flex: 1, height: {{px}}
flex: 1
,height
wird ignoriert. Verwenden SieflexBasis
stattdessen.Hier sind meine Beobachtungen:
flex: 1
in der übergeordneten Ansicht nicht alle untergeordneten Elemente angezeigt werden, wie Sie es erwarten würden.Hot Reloading
Fehlerbehebung : Verwenden Sie diese Option nicht, um diese Werte zu testen. Nach einigen Ladevorgängen können Elemente falsch angezeigt werden. Ich empfehle, + (viel) zu aktivierenLive Reload
oder zu verwenden .commandrflex: 0
. Wenn Sie keinen Flex-Style-Wert hinzufügen, wird standardmäßig 0 verwendet.width
es immer berücksichtigt,flexDirection: "column"
unabhängig von den anderen Flex-Requisiten. Gleiches gilt fürheight
mitflexDirection: "row"
.flexBasis
überheight
daflexBasis
Trümpfeheight
.quelle