AsyncStorage反应本机无法获取项目

问题描述

这是我的代码

AsyncStorage.getItem('idtoken').then(value => console.log(value));

这是结果:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6NTEsImlhdCI6MTYwMzc5ODUyM30.d8veMJVBhYA9P_JAvfpOOMbuZxvMATyrHpzQBaXPHyg

但是当我尝试时:

 const getTaken = () => AsyncStorage.getItem('idtoken').then(value => {
    var tokenuser = value;
    return tokenuser;
  });
  token = getTaken();
  console.log(token);

结果是:{"_U": 0,"_V": 0,"_W": null,"_X": null}

如何获取存储在idtoken中的值,请帮助我

解决方法

您可以使用以下功能存储和获取数据:

  const storeData = async (key,value) => {
    try {
      await AsyncStorage.setItem(key,value); 
    } catch (error) {
      console.log(error);
    }
  };

  const getData = async key => {
    try {
      const data = await AsyncStorage.getItem(key);
      if (data !== null) {
        console.log(data);
        return data;
      }
    } catch (error) {
      console.log(error);
    }
  };

然后您可以调用函数并获取如下值:

存储值:

storeData("Keyname",the value);

获取值并将其设置为状态,例如:

  await getData"Keyname") 
    .then((data) => data)
    .then((value) => this.setState({ isFavorite: value }))
    .catch((err) => console.log("AsyncStorageErr: " + err));
,

尝试这种方式

const getTaken = async () => {    

    return await AsyncStorage.getItem("idtoken")
}

const token = getTaken();
console.log(token);
,

您正在将getTaken定义为可解决承诺的函数。为了正确调用它,您需要通过执行以下操作来说它是一个异步函数:

const getTaken = **async** () => AsyncStorage.getItem('idtoken').then(value => {
    var tokenuser = value;
    return tokenuser;
  });

然后,您无法通过在调用前添加等待来获得其结果。

token = **await** getTaken();`enter code here`