react-native - 受保护的路线 - 我如何在我需要从受保护的屏幕路由到不受保护的屏幕的地方构建signOut
问题描述
我正在尝试使用本教程构建受保护的路由器/身份验证流。https://reactnavigation.org/docs/auth-flow/
我的身份验证流程渲染函数如下所示:
render() {
const Stack = createStackNavigator();
return (
<>
{this.state.loading ?
<>
<View><Text>Loading</Text></View>
</>
:
< >
<Stack.Navigator>
{this.state.authenticated ?
<>
<Stack.Screen name="Home" component={Home} />
<Stack.Screen name="SignOut" component={SignOut} />
</>
:
<>
<Stack.Screen name="Register" component={Register} />
<Stack.Screen name="Login" component={Login} />
</>
}
</Stack.Navigator>
</>
}
</>
)
}
当我登录并想退出时,如何导航回注册或登录屏幕?基于这个流程,他们两个都不会在我的导航堆栈中,因为我已经通过了身份验证。
如果我尝试这样做,我会从我的登出屏幕上收到由于上述原因的错误。我该如何解决这个问题?
<Button
title="Go to Register"
onPress={() => navigate('Register')} //ERROR DUE TO SCREEN NOT FOUND
/>
解决方案
鉴于您的身份验证解决方案(从 移动Register / Login
到Home / Sign Out
),请尝试使用相同的方法退出:将authenticated
状态切换为false
。这将导致您的导航器删除Home
andSign Out
屏幕并呈现Register
and Login
。
推荐阅读
- audio - 如何从 PRAAT 中的 .wav 文件中自动提取音高范围并将它们全部放入 .csv 文件中?
- oracle - ora-01858 在需要数字的地方发现了一个非数字字符 informatica
- php - Eloquent 找不到以 `datas` 结尾的表
- apache-spark - 具有自定义格式的 Apache Hudi 分区
- r - 如何在 R data.frame 中的所有行和列中查找检测单个值的重复项
- swift - [Element]' 要求 'Element' 继承自 'Object'
- python - 如何解决这个 Python Flask TypeError?我哪里做错了?
- xcode - 更改mac机器后xamarin表单ios构建失败
- javascript - 在提交之前在表单中调用 ajax,显示“未捕获的 ReferenceError”
- python - 如何在不为 Python 导入 CSV 的情况下将数据从 CSV 文件写入字典