まず、flexには
・flex container(親)
・flex item(子)
の二種類が存在します.(両者はコード上ではどちらもflexと表記します。)
この二つは親子の関係にあり、flex item(子)の中に新たなflex item(子)を書いた場合はこの二つも親子の関係になります。すなわち、flex item(子)はflex container(親)にもなり得るわけです。
次のコードを見てみましょう。
<View style={{flex: 1}}> #親
<View style={{flex: 1}}> </View> #子
<View style={{flex: 2}}> </View> #子
<View style={{flex: 3}}> </View> #子
</View>
このコードでは親子関係のみです。つまり第一階層がflex container、第二階層がflex itemに当たります。
<View style={{flex: 1}}> #親
<View style={{flex: 1}}> #子(一個下の階層との関係ではflex containerつまり親にもなり得る)
<View style={{flex: 1}}> </View> #孫
<View style={{flex: 2}}> </View> #孫
<View style={{flex: 3}}> </View> #孫
</View>
<View style={{flex: 2}}> </View> #子
<View style={{flex: 3}}> </View> #子
</View>
このコードでは親子孫の関係があります。第一階層は親、第二階層は子(または親とも見なせる)、第三階層は子(第一階層からすれば孫)です。
そしてここが一番重要な部分ですが、
・同階層にflexを持つ’‘などが"複数"ある場合は、そのflexの数の比率で画面を分割します。
例えば最初の例では全画面が(デフォルトでは上から1:2:3)に分割されます。
また、二つ目の例では全画面が1:2:3に分割された後、3分割のうち一番上の領域がさらに1:2:3に分割されます。なので領域は全部で5つ生じます(サイズ比は1:2:3:12:18)になります。
・同階層にflexを持つ’‘などが"一つだけ"ある場合は、そのflexの数字自体には何の意味もありません。どんな数字でもいいので入れておけばオッケーです。(逆にflexを与えないと画面が真っ白になってしまいます。)
その後同階層に二つ目以降のなどを付け加えた時に初めて、画面をその比率で分割するという意味を持つようになります。
説明は以上です。最後まで読んでいただいてありがとうございました。少しでも参考になれば幸いです!