我正在尝试使用本教程构建“受保护的路由器/身份验证流”。 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
/>
答案 0 :(得分:0)
鉴于您的身份验证解决方案(从Register / Login
移至Home / Sign Out
),请尝试相同的注销方法:将authenticated
状态切换为false
。这将使您的导航器放下Home
和Sign Out
屏幕,并渲染Register
和Login
。