在原生iOS代码中,我可以使用NSUserDefaults来存储和获取数据,这些都是同步操作。在react-native中,提供的是使用AsyncStorage,但我需要一个像NSUserDefaults这样的同步存储解决方案。我将使用数据获取的结果来确定要显示哪个屏幕,但由于它是异步的,所以在尝试获取持久化数据时,我总是不确定。
发布于 2018-03-04 04:27:17
调用后
AsyncStorage.getItem('@MySuperStore:key');
react-native将在其他线程中调用依赖于您的平台的本机函数,然后它将返回一个承诺来解决它,所以如果像这样调用
let value = AsyncStorage.getItem('@MySuperStore:key');
value ++;您的值无效,因为它的数据稍后将可用
正确的做法是:
try {
const value = await AsyncStorage.getItem('@MySuperStore:key');
if (value !== null){
// We have data!!
console.log(value);
}
} catch (error) {
// Error retrieving data
}完成此操作的另一种方法是
try {
AsyncStorage.getItem('@MySuperStore:key',(value )=>{
if (value !== null){
// We have data!!
console.log(value);
}});
} catch (error) {
// Error retrieving data
}发布于 2018-03-04 00:20:32
例如,您可以将其设置为异步
getData = async () => {
const value = await AsyncStorage.getItem('Yourkey');
this.setState({key: value})
}https://stackoverflow.com/questions/49086046
复制相似问题