我的用例是单击父组件(例如TouchableOpacity
)时触发的内容,但在单击子组件(Screen
和其他例子)时不会触发任何内容。我的情况与防止在网上冒泡一样。我从已经阅读的文档中说它应该使用onStartShouldSetResponderCapture
,但我仍然不了解其用法。以下是摘录。
<TouchableOpacity style={styles.container} onPress={() => alert('tes')}
>
<Screen style={styles.screenContainer} onStartShouldSetResponderCapture={() => false}>
<Title>Edit Nama Restoran</Title>
<Divider styleName='line' />
<TextInput
style={{ flex: 1 }}
value={value}
onChangeText={value => this.setState({ value })}
onSubmitEditing={this.handleSubmit}
/>
<View styleName='horizontal' style={styles.nameContainer}>
<Button styleName='confirmation dark' onPress={this.handleSubmit}>
<Text>UPDATE</Text>
</Button>
<Button styleName='confirmation' onPress={onClose}>
<Text>CLOSE</Text>
</Button>
</View>
</Screen>
</TouchableOpacity>
修改
以下是我案例的说明。
如果我点击叠加(在<Screen>
之外),它会触发警报(预期)。
如果我点击白色对话框(<Screen>
和里面的孩子),它也会触发警报(意外)。单击<Screen>
时,我需要的不是触发警报。
答案 0 :(得分:0)
更新以显示如何处理模式:
<Modal
visible={this.state.modalVisible}
onRequestClose={() => {alert("Modal has been closed.")}}
>
<TextInput
style={{ flex: 1 }}
value={value}
onChangeText={value => this.setState({ value })}
onSubmitEditing={this.handleSubmit}
/>
</Modal>
不确定这是否是您代码中的正确代码段,但基本上是您想要弹出的部分,将其从可触摸的不透明度中拉出来并在其周围包裹一个模态。然后点击它使其可见/不可见。