【发布时间】:2021-07-24 10:58:37
【问题描述】:
我已经实现了条件导航,这是 react-navigation 5 中切换导航的替代方法。
<Stack.Navigator
screenOptions={{
headerTintColor: '#fff',
headerTitleStyle: {
fontFamily: 'SFUIDisplay-Regular.otf',
fontWeight: 'bold',
},
headerStyle: {
backgroundColor: '#3e94f0',
},
headerTitleAlign: 'center',
}}
initialRouteName="login">
{loginState || isTokenExists ? (
<Stack.Screen
name="taskmanager"
component={Main}
options={{
title: 'Task Manager',
cardStyleInterpolator: CardStyleInterpolators.forHorizontalIOS,
}}
/>
) : (
<>
<Stack.Screen
name="login"
component={Login}
options={{
title: 'Sign In',
}}
/>
<Stack.Screen
name="register"
component={Register}
options={{
title: 'Register',
cardStyleInterpolator: CardStyleInterpolators.forHorizontalIOS,
}}
/>
<Stack.Screen
name="forgetpassword"
component={ForgetPassword}
options={{
title: 'Forgot Password',
cardStyleInterpolator: CardStyleInterpolators.forHorizontalIOS,
}}
/>
</>
)}
</Stack.Navigator>
注销时,loginStatus 设置为 false,并且令牌被清除。我已经把uid当做token了
//logout handler
const logoutHandler = () => {
console.log('AT logoutHandler', status);
storeData('clearUID');
dispatch(actions.loginStatus('', false));
lowerOptionsToggle();
};
现在的问题是注销功能工作正常,但如果我在用户登录时重新加载应用程序,它没有注销意味着条件导航不起作用。
【问题讨论】:
-
确保
loginState中的值||isTokenExists变化!否则它不会切换。
标签: react-native redux react-redux react-navigation