使用 AsyncStorage 在首次登录时显示屏幕

Using AsyncStorage to show screen on first login

我试图仅在用户使用 AsyncStorage 首次登录时显示披露屏幕。目前 getData 正在返回一个 Promise,它会在首次登录时直接进入登录屏幕。

我能得到一些帮助来使它按照我想要的方式运行吗?

这是我的登录处理程序:


  const key = 'key';
  const storeData = async () => {
    try {
      await AsyncStorage.setItem('key', 'true');
    } catch (error) {
      // saving failed
      console.log(error.message);
    }
  };

  const getData = async key => {
    let value = '';
    try {
      value = await AsyncStorage.getItem(key);
      return JSON.parse(value);
    } catch (e) {
      console.log(error.message);
    }
  };

  const _loginHandler = () => {
    if (userName == '' || password == '') {
      console.log('gagagagagagagagagagagagagagagagag');
    } else {
      setShowLoading(true);

      const payload = {userName: userName.trim(), password: password.trim()};

      setUserName('');
      setPassword('');

      _UserLoginHandler(payload).then(data => {
        setShowLoading(false);
        if (data.error) {
          GlobalShowSnackBar(data.error);
        } else {
          setTimeout(() => {
            setUserId(data);

            //props.navigation.replace(getData("key")?'Landing':'Disclosure')

            console.log('Key Value ' + JSON.stringify(getData('key'))); <-- this outputs Key Value {"_U":0,"_V":0,"_W":null,"_X":null}
            if (getData('key')) {
              props.navigation.navigate('Landing');
            } else {
              storeData(key);
              props.navigation.navigate('Disclosure');
            }
          }, 500);
        }
      });
    }
  };

我可以使用它


 getData('key').then(val => {
     if (val) {
        props.navigation.navigate('Landing');       
      } else {
           storeData(key);
           props.navigation.navigate('Disclosure');
        }
  });