Javascript 在可触摸元素内侦听press事件的元素

Javascript 在可触摸元素内侦听press事件的元素,javascript,reactjs,react-native,touchableopacity,touchablehighlight,Javascript,Reactjs,React Native,Touchableopacity,Touchablehighlight,我有一个元素可以监听新闻事件。如何将其封装在可触摸元素中,并让自定义元素继续侦听事件 我有过这样的结构 <TouchableOpacity onPress={(e) => { console.log(e.nativeEvent); }} style={{ flex: 1 }} > <EpubDocumentReader toggleEditHighlightModal={this.toggleEditHighlightModal}

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

我有过这样的结构

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

现在,
TouchableOpacity
捕捉新闻事件,但它不会调用子元素上的事件。

您试图实现什么

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

您可以做的是设置组件的状态,并在下一个渲染周期将事件传递给
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>

你想达到什么目的

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

您可以做的是设置组件的状态,并在下一个渲染周期将事件传递给
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>