所以我现在可以在点击框外时关闭模态,但问题是当我点击框内时它仍然关闭。我试过添加pointerEvents="none"
,似乎不起作用。
下面是我的代码:
<View>
<Modal
animationType="slide"
transparent={true}
style={{width: '100%', alignSelf: 'center', height: '100%', justifyContent: 'flex-start', backgroundColor:'green'}}
visible={this.state.modalVisible}
onRequestClose={() => {
alert('Modal has been closed.');
}}>
<TouchableWithoutFeedback onPress={() => {
this.setModalVisible(!this.state.modalVisible);
}}>
<View style={{ backgroundColor: 'red', flex: 1}} >
<View pointerEvents="none" style={{alignSelf: 'center', width: '80%', height: '50%', backgroundColor: 'purple', top: 100}}>
<Text pointerEvents="none" >Hello World!</Text>
</View>
</View>
</TouchableWithoutFeedback>
</Modal>
</View>
5条答案
按热度按时间2o7dmzc51#
a7qyws3x2#
所以我让它工作了,它只适用于react-native-modal,react附带的modal不适用于这个用例。
pnwntuvh3#
React Native提供的
Modal
组件没有提供很多选项来控制其行为。我建议您尝试react-native-community/react-native-modal。b1zrtrql4#
这种方法解决了我使用react-native-community/react-native-modal和state来管理可见性的问题。并且属性
onBackdropPress
将起作用。对于触发模态的元素,您应该将state设置为true。请参见下面的代码yks3o0rb5#