reactjs React Native Backlog不工作,如何修复它?[关闭]

yptwkmov  于 5个月前  发布在  React
关注(0)|答案(1)|浏览(50)

**已关闭。**此问题需要debugging details。目前不接受回答。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答问题。
3天前关闭。
Improve this question
我想退出应用程序时,用户按下android返回按钮.我有这个动作下面的代码.

useFocusEffect(() => {
    const backHandler = BackHandler.addEventListener(
      'hardwareBackPress',
      () => {
        BackHandler.exitApp();
        return true;
      },
    );
    return () => {
      backHandler.remove();
    };
  });

字符串
上面的代码中有一个错误。上面的代码有时可以工作,但不是所有情况下都可以。我使用的是react导航。我的应用程序中有两个导航器,即StackNavigatorDrawerNavigatorDrawerNavigatorStackNavigator内部。
解决我的bug

h9a6wy2h

h9a6wy2h1#

多个监听器:该问题可能源于多个后退按钮侦听器相互干扰,尤其是与嵌套导航器。焦点效果范围:由于组件生命周期或导航行为,useFocusEffect可能不总是按预期执行。
Install @react-navigation/native:npm install @react-navigation/native使用NavigationContainer从@react-navigation/native Package 根导航器

import { NavigationContainer } from '@react-navigation/native';

const App = () => {
  return (
    <NavigationContainer>
      {/* Your navigators here */}
    </NavigationContainer>
  );
};

字符串
在NavigationContainer中添加集中式侦听器:

useEffect(() => {
  const backHandler = BackHandler.addEventListener('hardwareBackPress', handleBackPress);
  return () => backHandler.remove();
}, []);

const handleBackPress = () => {
  if (/* condition to exit app */) {
    BackHandler.exitApp();
    return true;
  }
  return false;
};


从@react-navigation/native使用useIsFocused检查屏幕是否聚焦

import { useIsFocused } from '@react-navigation/native';

const MyScreen = () => {
  const isFocused = useIsFocused();

  useEffect(() => {
    if (isFocused) {
      const backHandler = BackHandler.addEventListener('hardwareBackPress', handleBackPress);
      return () => backHandler.remove();
    }
  }, [isFocused]);

  // ...
};

相关问题