为啥 onPress 函数在 Android TV 操作系统中触发了 3 次?

Posted

技术标签:

【中文标题】为啥 onPress 函数在 Android TV 操作系统中触发了 3 次?【英文标题】:Why onPress function fired 3 times in Android TV os?为什么 onPress 函数在 Android TV 操作系统中触发了 3 次? 【发布时间】:2021-05-16 02:52:20 【问题描述】:

我是 react native 的新手,我打算为 android TV 开发一个应用程序。

我打开了一个新项目并尝试了一些基本的东西。但是,我发现单击选择按钮后会触发 3 次 onPress 事件。我尝试使用我的真实设备和 AVD 得到相同的结果。

谁能告诉我为什么 onPress 会被解雇 3 次?

import  StatusBar  from 'expo-status-bar';
import React from 'react';
import  StyleSheet, Text, View, Button  from 'react-native';

export default function App() 
  return (
    <View style=styles.container>
      <Button title="123" onPress=() => 
        console.log('555');
       />
      <Text>Open up App.js to start working on your app!</Text>
      <StatusBar style="auto" />
    </View>
  );


const styles = StyleSheet.create(
  container: 
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  ,
);

控制台

555
555
555

【问题讨论】:

【参考方案1】:

https://snack.expo.io/aqnj-8iOf

如果您查看上面包含您的代码的小吃,您会注意到按下按钮时它不会多次记录。

似乎 javascript 捆绑器正在与模拟器分开记录。 尝试关闭和调试工具并仅保留在终端上,这应该可以解决问题。

【讨论】:

以上是关于为啥 onPress 函数在 Android TV 操作系统中触发了 3 次?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 onPressed 回调不能使用 Bloc 调用我的 Bloc?

Android问题:自定义的布局类,一次Touch,两次调用onTouchEvent()方法,为啥?

树莓派为啥不支持android

onPress 事件在 Android 上的 TouchableOpacity 上不起作用

Android设备上的Expo App某些onPress()未触发

Expo / React Native WebView,动画中的onPress事件在Android上不起作用