如何在 React-Native 中从内部 Touchable 到外部 Touchable 冒泡新闻事件?

lim*_*dev 9 javascript react-native

我有 2 个嵌套的Touchables,我想onPress在外层Touchable和内层中捕获事件Touchable,但只有内层会触发onPress事件,所以我们可以说该事件不会传播到父元素

我正在使用 React-Native 0.57

这是我的零食示例

我也在这里重新发布我的渲染代码:

<TouchableOpacity onPress={() => alert('outer')}
    style={{ backgroundColor: 'red', width: 200, height: 200 }}>
    <TouchableOpacity onPress={() => alert('inner')}
        style={{ backgroundColor: 'green', width: 100, height: 100 }}
    />
</TouchableOpacity>
Run Code Online (Sandbox Code Playgroud)

显示了如何只看到内部警报或外部警报。
相反,我想显示按下绿色视图的外部和内部警报...

代码是一个简化版本,在真实情况下,innerTouchable是一个可以在各种场景中使用的组件,要么在 a 内部Touchable,要么在非 Touchable 组件中

rom*_*n21 -2

如果您想在触发一个处理程序时调用另一个TouchableOpacity处理程序,只需从被触发的处理程序onPress中调用它即可。onPress

<TouchableOpacity onPress={myHandler}
    style={{ backgroundColor: 'red', width: 200, height: 200 }}>
    <TouchableOpacity onPress={myOtherHandler}
        style={{ backgroundColor: 'green', width: 100, height: 100 }}
    />
</TouchableOpacity>
Run Code Online (Sandbox Code Playgroud)

如果由最里面的'smyOtherHandler调用,您可以这样调用:TouchableOpacityonPressmyHandler

cost myOtherHandler = () => {
   myHandler(); 
   // ...other stuff
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,这可能是一个解决方案,但我的代码是一个简化版本,在原始版本中,内部`Touchable`是一个可重用的组件,所以它不知道是否有外部`Touchable`。此外,这不仅是`onPress`的问题,也是`onLongPress`和其他新闻事件的问题。 (2认同)