我在注销屏幕中有以下代码
await AsyncStorage.removeItem('userToken').then(()=>{
setTimeout(() => {
this.props.navigation.navigate('SignIn');
}, 3000);
在启动画面上,我正在检查这个
const userToken = AsyncStorage.getItem('userToken').then(() => {
this.props.navigation.navigate(userToken ? 'App' : 'SignIn');
});
注销后它会重定向到登录,但是当我再次打开应用程序时,启动画面会移动到应用程序而不是登录
我的初始代码就像
const userToken = AsyncStorage.getItem('userToken'), this.props.navigation.navigate(userToken ? 'App' : 'SignIn');
我做错了什么。请指教。
谢谢
你忘记了回调的问题,
const userToken = AsyncStorage.getItem('userToken').then((userToken) => {
this.props.navigation.navigate(userToken ? 'App' : 'SignIn');
});
您检查了异步数据结果吗?
例如:
在启动画面上
AsyncStorage.getItem("userToken").then(value => {
if(value) {
let token = JSON.parse(value);
this.props.navigation.navigate(token ? 'App' : 'SignIn');
} else {
this.props.navigation.navigate('SignIn');
}
});
我已经实现了这样的相同功能
async logout() {
AsyncStorage.clear();
Actions.SignIn(); // for navigating back to sign in screen if using router flux
this.props.navigation.navigate("SignIn"); // if using react-navigation
}