除子组件外,React Native触发器按下事件

时间:2016-12-20 15:10:19

标签: javascript reactjs react-native

我的用例是单击父组件(例如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>时,我需要的不是触发警报。

Illustation

1 个答案:

答案 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>

不确定这是否是您代码中的正确代码段,但基本上是您想要弹出的部分,将其从可触摸的不透明度中拉出来并在其周围包裹一个模态。然后点击它使其可见/不可见。