首页 > 解决方案 > React Native BackHandler 问题与反应导航

问题描述

我正在用 RN 制作一个应用程序并使用了 react-navigation,我被 BackHandler 困住了,不知道如何处理它。我有一个正常的结构如下 - 1. 启动画面 2. 登录屏幕 3. 带有抽屉菜单的主屏幕 4. 通知屏幕 将加载启动流程并检查用户是否登录,如果他是主页screen 将是第一个,否则 Login 将是第一个。

如果我从登录中按下返回,它应该退出应用程序并且与主屏幕相同,如果我从通知屏幕返回,它应该导航到主屏幕。

我尝试了以下方法来实现这一点,但无法做到 - 1. 已在所有组件中处理 BackHandler 并已在 home 中编写退出并使用 Alert 登录并询问是否真的要退出,但是当我转到通知时屏幕并按下设备后退按钮,主屏幕中的后退方法被覆盖并且无法按我想要的方式工作。2.在根组件中添加BackHandler并根据当前路由参数制作东西,使用redux和react-navigation,但它也没有帮助我。

请帮助我实现我想要的最佳方法是什么,我真的被卡住了

标签: react-nativereact-navigation

解决方案


您应该像这样创建 2 个堆栈导航器:

  1. AuthNavigator:登录
  2. MainNavigator:主页 -> 通知

打开启动画面时,您将检查用户是否登录:

  • 如果没有,打开AuthNavigator:this.props.navigation.dispatch(AuthNavigator); 登录成功后,需要reset back stack并导航到MainNavigator
  • 如果是,请打开 MainNavigator:this.props.navigation.dispatch(MainNavigator);

推荐阅读