我正在尝试将数据存储在AsyncStorage中并将其加载回(显然)。 .setItem函数有效,当我调用它时,通知会在iOS模拟器的底部弹出。但是,.getItem函数不起作用,当我进行console.log记录时,它返回undefined
。我有两个函数来存储和获取数据:
setData = (rawDataToStore, keyToStore) => {
data_store = JSON.stringify(rawDataToStore);
AsyncStorage.setItem(keyToStore, data_store, () => {
console.warn('Stored data!')
} )
}
getData = (keyToSearch) => {
AsyncStorage.getItem(keyToSearch).then(storage => {
parsed_data = JSON.parse(storage);
return parsed_data
}).catch(e => console.warn(e))
}
我刚刚测试了render()中的功能:
保存数据:
this.setData({value: 1}, "test_data");
加载数据:
console.log(this.getData("test_data"));
console.log仅返回未定义。
我对Asyncstorage完全陌生,但是我在做什么错呢?
答案 0 :(得分:0)
您的console.log
返回undefined
...原因,您的setData
函数尚未完成工作...您必须首先await
进行,原因这是一个异步操作。
class YourComponent extends React.Component {
async componentDidMount() {
await this.setData();
const data = await this.getData();
console.log('data returned', data);
}
setData = async (rawDataToStore, keyToStore) => {
data_store = JSON.stringify(rawDataToStore);
await AsyncStorage.setItem(keyToStore, data_store);
};
getData = async keyToSearch => {
let parsed_data = null;
const storage = await AsyncStorage.getItem(keyToSearch);
if (storage) {
parsed_data = JSON.parse(storage);
console.log('Data in AsyncStorage: ', parsed_data);
}
return parsed_data;
};
}