嵌套的TouchableOpacity父onPress不起作用

时间:2020-04-13 12:57:09

标签: javascript react-native touchableopacity

我遇到了这个问题,我试图确保触发了父母的onPress,但不会成功

尝试创建一个可重用的自定义touchableOpacity组件,该组件包装其他组件,以便可以决定是否可以显示子项并确定/更改按下子项时会发生什么。

const CustomTouchable = (children, onPress) => {
   function handleOnPress = () => {
      if(validation){
         onPress();
      }
   }

   return <TouchableOpacity onPress={handleOnPress}>{children}</TouchableOpacity>
}


const MainComponent = () => {
   function onPress = () => {console.log('test')}

    <CustomTouchable onPress={onPress}>
       <TouchableOpacity style={styles.button}>
          <Text>Press Here</Text>
       </TouchableOpacity>
    </CustomTouchable>
}

但是父onPress没有触发,我该如何触发它?

2 个答案:

答案 0 :(得分:4)

这是因为触摸事件是由孩子而不是父母接收的。将以下道具分配给您的子组件

pointerEvents={"none"}

答案 1 :(得分:-1)

禁用第二个这样的TouchableOpacity

<TouchableOpacity onPress={onPress}>
  <TouchableOpacity
    disabled
    style={styles.button}
  >
    <Text>Press Here</Text>
  </TouchableOpacity>
  </TouchableOpacity>