react-native - 导航到登录屏幕后重置堆栈
问题描述
我正在制作一个 react-native 移动应用程序,我有一个导航抽屉,上面有一个注销按钮。我知道如何从那里导航到登录屏幕,使用props.navigation.navigate('Login')
,但问题是如果用户这样做,他们仍然可以从登录屏幕打开抽屉并导航回其他屏幕之一,或按后退按钮在安卓上。
如果用户来自另一个页面然后禁用打开抽屉按钮,我想我可以在登录屏幕上进行检查,但这似乎有点 hacky。我想知道是否有正确的方法可以做到这一点,也许是在登录时重置堆栈,我不确定。
解决方案
你的实现不好。根据您提供的详细信息,我认为您的所有页面都合二为一stack
。我建议您将身份验证和应用程序堆栈分开。为此,我强烈推荐:https ://reactnavigation.org/docs/en/auth-flow.html
但重置堆栈:
重置
重置操作会擦除整个导航状态并将其替换为多个操作的结果。
- index - number - required - 导航状态下路由数组上的活动路由索引。
- actions - array - required - 将替换导航状态的导航操作数组。
- key - 字符串或 null - 可选 - 如果设置,具有给定键的导航器将重置。如果为 null,则根导航器将重置。
import { StackActions, NavigationActions } from 'react-navigation';
const resetAction = StackActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: 'Profile' })],
});
this.props.navigation.dispatch(resetAction);
推荐阅读
- mysql - 在 MYSQL 查询中使用 WHERE 和 ORDER BY 条件时结果非常慢
- elasticsearch - 有没有办法让我有条件地链接查询中的多个索引?
- javascript - Raycaster 在three.js 中俯仰相机时置换对象交叉点
- javascript - 在 .json 文件中记录点击次数
- angular - 如何使用Angular [ngClass]从json文件绑定类名
- python - 如何正确声明函数之外的变量,以便迷你文本冒险中的 test() 运行
- android - 进行应用内购买时出现空点异常
- rust - 为什么即使我没有设置 default-features = false,rand::Rng 也能在无标准环境中工作?
- angular - 元素改变时的事件
- sql-server - 如何将 Pivot 与 RowNumber 和日期一起使用