zIndex
は最近、React-Nativeに導入され、レイヤーのスタック内のView
の位置を変更します。
ただし、View
コンポーネントの上にModal
を配置することはできません。
私のコードは次のようになります:
render() {
return (
<View>
<Modal visible>
{props.children}
</Modal>
<View style={{ zIndex: 1000 }}>
<Text>Loading...</Text>
</View>
</View>
);
}
<Modal>
の使用をやめて、Modal
のように動作する通常のアニメーション<View>
を作成できると思いますが、別の解決策を見つけたいと思います。
何か案が?
残念ながら、zIndex
を操作しても、反応ネイティブModal
を超えることはありません。 Modal
コンポーネントは、残りの反応ネイティブアプリケーションの上に位置するネイティブビューです。その上に何かを置く唯一の方法は、モーダル自体に何かを置くか、あるいはモーダルのjs only実装を使用することです。
ちなみに、react-native-communityバージョンのmodalもreact-nativeモーダルに基づいて構築されているため、同じ問題が発生します。ここではさまざまなjs実装についての議論があります: https://github.com/react-native-community/react-native-modal/issues/145
ビューの1つではなく、モーダルのz-indexを変更する必要があります(値1
のz-indexで十分です)。
render() {
return (
<View>
<Modal visible style={{ zIndex: 1 }}>
{props.children}
</Modal>
<View>
<Text>Loading...</Text>
</View>
</View>
);
}
より大きいz-indexを持つ要素は、通常、低いもの( MDN docs )を持つ要素をカバーします。
編集:
もう1つの解決策は、要素の順序を変更することです。
render() {
return (
<View>
<View>
<Text>Loading...</Text>
</View>
<Modal visible>
{props.children}
</Modal>
</View>
);
}
このソリューションでは、モーダルがすでにビューの上にあるため、z-index
は必要ありません。
モーダルでは不可能です。モーダルは、zIndexに与えられたものや画面内の他のコンポーネントに関係なく、常に表示されます。
Visible = falseにしない限り、常に表示されます
あなたが望むものを実装するため。絶対配置のビューをzIndexトリックと一緒に使用して、このビューを前後に移動できます。
render() {
return (
<View>
<View style={{position:'absolute',top:0,bottom:0,left:0,right:0,zIndex:visible?-1:2}}>
{props.children}
</View>
<View style={{ zIndex: 1 }}>
<Text>Loading...</Text>
</View>
</View>
);
}