TouchableOpacity onPress在Android上不起作用

时间:2018-07-11 09:46:02

标签: android react-native react-native-android touchableopacity

我有3个简单的React组件-

首先是实际视图(让我们将此屏幕命名为A)-

return(
    <ImageBackground
    ...
    >
       <ScrollView>


          <ChildButton
            onPress={this.someFunction.bind(this)}
           />

       </ScrollView>
    </ImageBackground>
)

然后是ChildButton组件---

    return(
    <ChildButton>
       <Button
         style={...someStyleObject}
         onPress={this.props.onPress}
        >

       </Button>

    </ChildButton>
)

然后有Button组件---

return (
<TouchableOpacity
  onPress={this.props.onPress}
 >
    {this.props.children}
</TouchableOpacity>

)

这里的主要问题是我的onPress没有从屏幕A调用,仅在Android上。在iOS上运行正常。可能的原因是什么?

注意:我已经将控制台放入ChildButton和Button组件中,并且它们没有被打印出来。

3 个答案:

答案 0 :(得分:4)

当我不小心从“ react-native-gesture-handler”而不是“ react-native”导入TouchableOpacity时遇到了这个问题。如果您是这种情况,请进行更改,以便从“ react-native”导入TouchableOpacity,然后从“ react-native-gesture-handler”中删除导入,这样应该可以!

答案 1 :(得分:1)

当我继承正在进行的RN项目时,我也遇到了这个问题。我没有意识到我们已经安装了这个“ react-native-gesture-handler”软件包,并意外地让VS Code自动导入它。

始终检查您的进口! :)

答案 2 :(得分:1)

import {TouchableOpacity} from 'react-native' 
works fine in both android and iOS


import {TouchableOpacity} from 'react-native-gesture-handler'
Does not work in android, but works in iOS.

因此更好地使用用户本机导入。

如果从react-native-gesture-handler导入的TouchableOpacity,则

onPress事件不会在android中调用。