8

我有 3 个简单的反应组件-

首先是实际视图(让我们将此屏幕命名为 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 组件中,并且它们没有被打印出来。

4

3 回答 3

14

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

于 2019-05-08T07:57:22.237 回答
3

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

始终检查您的进口!:)

于 2019-07-17T16:25:38.030 回答
2
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 中调用。

于 2020-08-27T08:28:44.830 回答