AsyncStorage无法正常工作

时间:2018-02-14 15:33:31

标签: reactjs react-native

我在我的Component的构造函数中添加了AsyncStorage的setItem函数,然后我创建了一个函数来使用getItem函数获取它的值,但它返回空。我错过了什么吗?

这是我的代码:

constructor(props) {
    super(props);
    try {
        AsyncStorage.setItem('testKey', 'I like to save it.');
    } catch (error) {
        alert("error", error);
        // Error saving data
    }
}

getData(){
    AsyncStorage.getItem('testKey').then((data) => {
        alert("data", data);
    })
}

基本上,我想将一个accessToken存储到AsyncStorage,一旦设置好,我想调用getItem函数来使用它。

此外,setItem的then()函数不起作用:

AsyncStorage.setItem('testKey','blah blah').then(() => {
  console.log("I never get executed."); // -> this code never executes for some reason
});

我一直试图解决它,但无济于事。

1 个答案:

答案 0 :(得分:1)

请记住,两个(setItem和getItem)都是异步执行的,async / await应解决您的问题,如documentation中所述:

constructor(props) {
    super(props);
    this.setData();
}

async setData() {
    try {
        await AsyncStorage.setItem('testKey', 'I like to save it.');
    } catch (error) {
        // Error setting data
    }
}

async getData(){
    try {
        const value = await AsyncStorage.getItem('testKey');
        if (value) {
            // We have data!!
            console.log(value);
        }
    } catch (error) {
        // Error retrieving data
    }
}