从异步存储中删除项目不起作用

问题描述 投票:1回答:3

我在注销屏幕中有以下代码

 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'); 

我做错了什么。请指教。

谢谢

react-native react-native-android asyncstorage
3个回答
0
投票

你忘记了回调的问题,

const userToken = AsyncStorage.getItem('userToken').then((userToken) => {
        this.props.navigation.navigate(userToken ? 'App' : 'SignIn');
    });

0
投票

您检查了异步数据结果吗?

例如:

在启动画面上

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');
      }
    });

0
投票

我已经实现了这样的相同功能

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
 }
© www.soinside.com 2019 - 2024. All rights reserved.