javascript - 监听可触摸元素内的按下事件的元素

标签 javascript reactjs react-native touchableopacity touchablehighlight

我有一个监听新闻事件的元素。如何将其包装在可触摸元素中并让我的自定义元素继续监听事件?

我的结构是这样的

<TouchableOpacity
    onPress={(e) => { console.log(e.nativeEvent); }}
    style={{ flex: 1 }}
>
    <EpubDocumentReader
        toggleEditHighlightModal={this.toggleEditHighlightModal}
        onPress={(cfi, contents) => { console.log(cfi); }}
        styleWidthBook={styleWidthBook}
    />
</TouchableOpacity>

现在,TouchableOpacity 捕获按下事件,但不会在子元素上调用该事件。

最佳答案

你想要实现什么目标?

您的自定义组件的 onPress 永远不会被调用。 仅 TouchableOpacity 的 onPress 会被调用。

您可以做的是在组件上设置 State,然后在下一个渲染周期将事件传递给您的 EpubDocumentReader

<TouchableOpacity
    onPress={(e) => {
        console.log(e.nativeEvent);
        this.setState({
            event: e
        })
    }}
    style={{ flex: 1 }}
>
    <EpubDocumentReader
        event={this.state.event}
        toggleEditHighlightModal={this.toggleEditHighlightModal}
        onPress={(cfi, contents) => {
            console.log(cfi);
        }}
        styleWidthBook={styleWidthBook}
    />
</TouchableOpacity>

当然,您需要在构造函数中设置初始状态。

constructor(props){
  super(props)
  this.state = {
    event: null
  }
}

关于javascript - 监听可触摸元素内的按下事件的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45846136/

相关文章:

javascript - 通过 SelectBox 的下一个上一个按钮

javascript - rails 4 : display spinner with javascript on form submit

reactjs - 不是来自 webpack 的内容由/foo 提供

javascript - React-Native Android 操作错误 : 'undefined is not an object (evaluating ' action. 类型')'

firebase - react native : in-app messages when app is in background

java - React Native 适用于哪个 Java 版本?

javascript - 有没有办法在javascript中重新组织以下数组?

javascript - @observable 在 MobX 中是如何工作的?

javascript - 在react.js和Yii2 API中上传文件

javascript - 将 css 导入 React 组件后未添加样式