React-native同步存储解决方案

时间:2018-03-03 15:52:58

标签: react-native asyncstorage

在原生iOS代码中,我可以使用NSUserDefaults来存储和获取数据,这些数据是同步操作。在react-native中,提议是使用AsyncStorage,但我需要一个用于同步存储的解决方案,例如NSUserDefaults。 我将使用数据提取的结果来确定要显示的屏幕,但由于它是异步的,因此在尝试获取持久数据时总是未定义。

2 个答案:

答案 0 :(得分:3)

之后

  

AsyncStorage.getItem( '@ MySuperStore:键');

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
}

答案 1 :(得分:0)

你可以使它异步,例如

   getData = async () => {
       const value = await AsyncStorage.getItem('Yourkey');
        this.setState({key: value})

  }