react-native - React Native BackHandler 问题与反应导航
问题描述
我正在用 RN 制作一个应用程序并使用了 react-navigation,我被 BackHandler 困住了,不知道如何处理它。我有一个正常的结构如下 - 1. 启动画面 2. 登录屏幕 3. 带有抽屉菜单的主屏幕 4. 通知屏幕 将加载启动流程并检查用户是否登录,如果他是主页screen 将是第一个,否则 Login 将是第一个。
如果我从登录中按下返回,它应该退出应用程序并且与主屏幕相同,如果我从通知屏幕返回,它应该导航到主屏幕。
我尝试了以下方法来实现这一点,但无法做到 - 1. 已在所有组件中处理 BackHandler 并已在 home 中编写退出并使用 Alert 登录并询问是否真的要退出,但是当我转到通知时屏幕并按下设备后退按钮,主屏幕中的后退方法被覆盖并且无法按我想要的方式工作。2.在根组件中添加BackHandler并根据当前路由参数制作东西,使用redux和react-navigation,但它也没有帮助我。
请帮助我实现我想要的最佳方法是什么,我真的被卡住了
解决方案
您应该像这样创建 2 个堆栈导航器:
- AuthNavigator:登录
- MainNavigator:主页 -> 通知
打开启动画面时,您将检查用户是否登录:
- 如果没有,打开AuthNavigator:
this.props.navigation.dispatch(AuthNavigator);
登录成功后,需要reset back stack并导航到MainNavigator - 如果是,请打开 MainNavigator:
this.props.navigation.dispatch(MainNavigator);
推荐阅读
- swift - first(where:) 方法总是 O(n) 还是使用 Set 或 Dictionary 可以是 O(1)?
- virtual-machine - 警告:字符设备 /dev/vboxdrv 不存在
- terraform - 在 Terraform 中覆盖名称标签
- reactjs - Firebase 实时数据库验证规则不起作用
- c++ - 线程成员函数从成员变量中获取错误值
- tailwind-css - Tailwindcss 响应式断点不起作用
- keras - 如何在 Anaconda 中安装 keras-rl
- python - 如何收集请求头数据
- php - 单击提交时,我的浏览器会转到 domain.com/contactform.php 运行 php
- arrays - MongoDB - 在多个文档中更新数组中的多个子文档