我正在构建一个具有SwitchNavigator
之间定义的身份验证流程的React-Native + Redux + React-Navigation应用程序:
const UnauthStack = createStackNavigator({
SignIn: SignInScreen, SignUp: SignUpScreen
}, { initialRouteName: 'SignIn' })
const AuthStack = createBottomTabNavigator({
Home: HomeScreen, Profile: ProfileScreen
}, { initialRouteName: 'Home' })
export default createAppContainer(createSwitchNavigator({
AuthLoading: AuthLoadingScreen,
Unauth: UnauthStack,
Auth: AuthStack
}, { initialRouteName: 'AuthLoading' }))
它只是在查找访问令牌时显示身份验证加载屏幕:如果用户存储了令牌,则导航到Auth
堆栈,否则导航到Unauth
堆栈。
用户使用存储的(承载)令牌向Auth
堆栈内的API发送授权请求,并且在某些时候该令牌将不再有效。那一刻,我想强迫用户进行登录。
在我的redux 商店中跟踪上次响应状态:
{
lastResponseStatus: 200,
oauth: { ... },
entities: { ... },
}
问题:
当SignInScreen
收到lastResponseStatus
时,如何以编程方式导航用户到401
(未认证堆栈)?
我正在考虑连接到Auth导航器的全局容器,该容器会将状态映射到props之前的其他屏幕。