Hier ist ein Testcode zu beachten:
render() {
return <View style={{flex: 1,backgroundColor: "cornflowerblue"}}>
<View style={{backgroundColor: "chartreuse"}}><Text>Nothing (17px)</Text></View>
<View style={{flex: 0, backgroundColor: "yellow"}}><Text>flex: 0 (17px)</Text></View>
<View style={{flex: 0, flexBasis: 10, backgroundColor: "brown"}}><Text>flex: 0, flexBasis: 10 (10px)</Text></View>
<View style={{flex: 0, flexGrow: 1, backgroundColor: "orange"}}><Text>flex: 0, flexGrow: 1 (97px)</Text></View>
<View style={{flex: 0, flexShrink: 1, backgroundColor: "tan"}}><Text>flex: 0, flexShrink: 1 (17px)</Text></View>
<View style={{flex: 0, flexGrow: 1, flexBasis: 10, backgroundColor: "purple"}}><Text>flex: 0, flexGrow: 1, flexBasis: 10 (90px)</Text></View>
<View style={{flex: 0, flexShrink: 1, flexBasis: 10, backgroundColor: "gray"}}><Text>flex: 0, flexShrink: 1, flexBasis: 10 (10px with 7px hidden below the next element)</Text></View>
<View style={{flex: 1, backgroundColor: "blue"}}><Text>flex: 1 (80px)</Text></View>
<View style={{flex: 1, flexBasis: 10, backgroundColor: "cornsilk"}}><Text>flex: 1, flexBasis: 10 (90px)</Text></View>
<View style={{flex: 1, flexGrow: 1, backgroundColor: "red"}}><Text>flex: 1, flexGrow: 1 (80px)</Text></View>
<View style={{flex: 1, flexShrink: 1, backgroundColor: "green"}}><Text>flex: 1, flexShrink: 1 (80px)</Text></View>
<View style={{flex: 1, flexGrow: 1, flexBasis: 10, backgroundColor: "aqua"}}><Text>flex: 1, flexGrow: 1, flexBasis: 10 (90px)</Text></View>
<View style={{flex: 1, flexShrink: 1, flexBasis: 10, backgroundColor: "pink"}}><Text>flex: 1, flexShrink: 1, flexBasis: 10 (90px)</Text></View>
</View>;
}
Hier ist ein Screenshot des obigen Codes:

Hinzugefügt widthund height:
render() {
return <View style={{flex: 1,backgroundColor: "cornflowerblue"}}>
<View style={{flex: 0, backgroundColor: "orange"}}><Text>flex: 0 (17px)</Text></View>
<View style={{flex: 0, width: 700, height: 20, backgroundColor: "yellow"}}><Text>flex: 0, width: 700, height: 20 (20px)</Text></View>
<View style={{flex: 0, flexBasis: 10, width: 700, height: 20, backgroundColor: "brown"}}><Text>flex: 0, flexBasis: 10, width: 700, height: 20 (10px with 7px hidden below the next element)</Text></View>
<View style={{flex: 0, flexGrow: 1, width: 700, height: 20, backgroundColor: "orange"}}><Text>flex: 0, flexGrow: 1, width: 700, height: 20 (90px)</Text></View>
<View style={{flex: 0, flexShrink: 1, width: 700, height: 20, backgroundColor: "tan"}}><Text>flex: 0, flexShrink: 1, width: 700, height: 20 (20px)</Text></View>
<View style={{flex: 0, flexGrow: 1, flexBasis: 10, width: 700, height: 20, backgroundColor: "purple"}}><Text>flex: 0, flexGrow: 1, flexBasis: 10, width: 700, height: 20 (80px)</Text></View>
<View style={{flex: 0, flexShrink: 1, flexBasis: 10, width: 700, height: 20, backgroundColor: "gray"}}><Text>flex: 0, flexShrink: 1, flexBasis: 10, width: 700, height: 20 (10px with 7px hidden below the next element)</Text></View>
<View style={{flex: 1, backgroundColor: "orange"}}><Text>flex: 1 (70px)</Text></View>
<View style={{flex: 1, width: 700, height: 20, backgroundColor: "blue"}}><Text>flex: 1, width: 700, height: 20 (70px)</Text></View>
<View style={{flex: 1, flexBasis: 10, width: 700, height: 20, backgroundColor: "cornsilk"}}><Text>flex: 1, flexBasis: 10, width: 700, height: 20 (80px)</Text></View>
<View style={{flex: 1, flexGrow: 1, width: 700, height: 20, backgroundColor: "red"}}><Text>flex: 1, flexGrow: 1, width: 700, height: 20 (70px)</Text></View>
<View style={{flex: 1, flexShrink: 1, width: 700, height: 20, backgroundColor: "green"}}><Text>flex: 1, flexShrink: 1, width: 700, height: 20 (70px)</Text></View>
<View style={{flex: 1, flexGrow: 1, flexBasis: 10, width: 700, height: 20, backgroundColor: "aqua"}}><Text>flex: 1, flexGrow: 1, flexBasis: 10, width: 700, height: 20 (80px)</Text></View>
<View style={{flex: 1, flexShrink: 1, flexBasis: 10, width: 700, height: 20, backgroundColor: "pink"}}><Text>flex: 1, flexShrink: 1, flexBasis: 10, width: 700, height: 20 (80px)</Text></View>
</View>;
}
Hier ist ein Screenshot des obigen Codes:

flex: 0 (Standard)
flex: 0
- Element nimmt die Größe des Inhalts an. Laut Dokumentation sollte die Größe nach Einstellungen
widthund heightRequisiten bemessen sein, aber es scheint zum Inhalt zu passen, wenn diese nicht festgelegt sind.
flex: 0, flexBasis: {{px}}
- Element nimmt die durch angegebene Größe an
flexBasis
flex: 0, flexGrow: 1
- Mit
flex: 0und flexGrow: 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 ist flex: 1. Es ist ähnlich, flex: 1, flexBasis: 10außer dass Sie anstelle einer Anzahl von Pixeln die Größe des Inhalts hinzufügen.
flex: 0, flexShrink: 1
- Mit
flex: 0und flexShrink: 1scheint das Element die Größe des Inhalts anzunehmen, mit anderen Worten, es ist dasselbe wie nur flex: 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}}
- Dies ist dasselbe,
flex: 0, flexGrow: 1außer dass anstelle des Hinzufügens der Inhaltsgröße zu einem flex: 1Element die angegebene Anzahl von Pixeln hinzugefügt wird .
flex: 0, flexShrink: 1, flexBasis: {{px}}
- Dies ist das gleiche wie
flex: 0, flexBasis: {{px}}.
flex: 0, height: {{px}}
- Mit
flex: 0, heightwird behandelt wie flexBasis. Wenn beide a heightund gesetzt flexBasissind, heightwird ignoriert.
flex: 1
flex: 1
flex: 1, flexBasis: {{px}}
- Mit
flex: 1und flexBasis: {{px}}; Der Wert von flexBasiswird zur Größe des Elements addiert. Mit anderen Worten, es ist, als würde man ein flex: 1Element nehmen und die Anzahl der durch festgelegten Pixel hinzufügen flexBasis. Wenn also ein flex: 1Element 50 Pixel groß ist und Sie hinzufügen, ist flexBasis: 20das Element jetzt 70 Pixel groß.
flex: 1, flexGrow: 1
flex: 1, flexShrink: 1
flex: 1, flexGrow: 1, flexBasis: {{px}}
- Dies ist das gleiche wie
flex: 1, flexBasis: {{px}}da flexGrowignoriert wird.
flex: 1, flexShrink: 1, flexBasis: {{px}}
- Dies ist das gleiche wie
flex: 1, flexBasis: {{px}}da flexShrinkignoriert wird.
flex: 1, height: {{px}}
- Mit
flex: 1, heightwird ignoriert. Verwenden Sie flexBasisstattdessen.
Hier sind meine Beobachtungen:
- Tipp zur Fehlerbehebung: Stellen Sie sicher, dass die übergeordneten Ansichten den Kindern Raum zum Wachsen / Schrumpfen geben. Beachten Sie, dass
flex: 1in der übergeordneten Ansicht nicht alle untergeordneten Elemente angezeigt werden, wie Sie es erwarten würden.
- Tipp zur
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 aktivieren Live Reloadoder zu verwenden .commandr
- Der Standard-Flex-Wert ist
flex: 0. Wenn Sie keinen Flex-Style-Wert hinzufügen, wird standardmäßig 0 verwendet.
- Tipp zur Fehlerbehebung: Fehlerbehebung Wenn Sie versuchen, herauszufinden, warum etwas nicht so angezeigt wird, wie Sie es sich vorstellen, beginnen Sie mit dem (am meisten) übergeordneten Element und stellen Sie sicher, dass es den Kindern genügend Platz bietet, um das zu tun, was sie tun müssen. Mit anderen Worten, stellen Sie es auf flex: 1 ein und prüfen Sie, ob dies hilfreich ist. Gehen Sie dann zum nächsten Kind und wiederholen Sie den Vorgang.
- Es scheint, als würde
widthes immer berücksichtigt, flexDirection: "column"unabhängig von den anderen Flex-Requisiten. Gleiches gilt für heightmit flexDirection: "row".
- Nach dem Ausführen dieser Test im Allgemeinen würde ich
flexBasisüber heightda flexBasisTrümpfe height.