React-native同步存储方案
React-native sync storage solution
在本机 iOS 代码中,我可以使用 NSUserDefaults
来存储和获取数据,这是同步操作。在 react-native 中,提议是使用 AsyncStorage
,但我需要一个同步存储的解决方案,比如 NSUserDefaults
。
我将使用数据获取的结果来确定要显示的屏幕,但由于它是异步的,所以在尝试获取持久数据时我总是得到 undefined 。
你可以让它异步,例如
getData = async () => {
const value = await AsyncStorage.getItem('Yourkey');
this.setState({key: value})
}
调用后
AsyncStorage.getItem('@MySuperStore:key');
react-native 将在其他线程中调用依赖于您的平台的本机函数
然后它将 return 承诺解决它
, 所以如果像这样调用
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
}
在本机 iOS 代码中,我可以使用 NSUserDefaults
来存储和获取数据,这是同步操作。在 react-native 中,提议是使用 AsyncStorage
,但我需要一个同步存储的解决方案,比如 NSUserDefaults
。
我将使用数据获取的结果来确定要显示的屏幕,但由于它是异步的,所以在尝试获取持久数据时我总是得到 undefined 。
你可以让它异步,例如
getData = async () => {
const value = await AsyncStorage.getItem('Yourkey');
this.setState({key: value})
}
调用后
AsyncStorage.getItem('@MySuperStore:key');
react-native 将在其他线程中调用依赖于您的平台的本机函数 然后它将 return 承诺解决它 , 所以如果像这样调用
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
}