【问题标题】:TouchableOpacity onPress not working on AndroidTouchableOpacity onPress 在 Android 上不起作用
【发布时间】:2018-07-11 09:46:01
【问题描述】:

我有 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 组件中,但它们没有被打印出来。

【问题讨论】:

  • 'ChildButton' 组件是否在渲染方法中使用自身? return( &lt;ChildButton&gt;
  • @OleksandrBlyzniuk ChildButton 是一个功能组件,而 Button 是一个类组件。

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


【解决方案1】:

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

【讨论】:

  • 谢谢!现在,等我戴上我的笨蛋帽。
  • 是的,嗨。又是我。我想我应该把帽子戴上。干杯。
  • 非常感谢!已经犯了 5 次这个错误,我每次都忘记寻找自动导入。
  • 哈哈哇。这次真是万分感谢。在意识到这是问题所在之前,我尝试了一切。它适用于 ios,因此更难追踪
【解决方案2】:

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

始终检查您的进口! :)

【讨论】:

    【解决方案3】:
    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.
    

    对用户反应原生导入更好。

    如果 TouchableOpacity 从 react-native-gesture-handler 导入,onPress 事件不会在 android 中调用。

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 2019-05-02
      • 2020-09-19
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      • 1970-01-01
      • 2018-06-22
      • 2017-08-30
      相关资源
      最近更新 更多