Удалить элемент из асинхронного хранилища не работает - PullRequest
1 голос
/ 04 апреля 2019

У меня есть код ниже на экране выхода

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

Что я делаю не так. Пожалуйста, сообщите.

Спасибо

Ответы [ 3 ]

0 голосов
/ 04 апреля 2019

Проверяли ли вы результат асинхронных данных?

например:

На заставке

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 голосов
/ 04 апреля 2019

я реализовал такую ​​же функциональность, как эта

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
 }
0 голосов
/ 04 апреля 2019

Вы забыли параметр обратного вызова,

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