首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React-本机同步存储解决方案

React-本机同步存储解决方案
EN

Stack Overflow用户
提问于 2018-03-03 23:52:58
回答 2查看 10.1K关注 0票数 7

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-04 04:27:17

调用后

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

react-native将在其他线程中调用依赖于您的平台的本机函数,然后它将返回一个承诺来解决它,所以如果像这样调用

代码语言:javascript
复制
  let value =  AsyncStorage.getItem('@MySuperStore:key');
   value ++;

您的值无效,因为它的数据稍后将可用

正确的做法是:

代码语言:javascript
复制
try {
  const value = await AsyncStorage.getItem('@MySuperStore:key');
  if (value !== null){
    // We have data!!
    console.log(value);
  }
} catch (error) {
  // Error retrieving data
}

完成此操作的另一种方法是

代码语言:javascript
复制
  try {
      AsyncStorage.getItem('@MySuperStore:key',(value )=>{  
      if (value !== null){
        // We have data!!
    console.log(value);
  }});

} catch (error) {
  // Error retrieving data
}
票数 6
EN

Stack Overflow用户

发布于 2018-03-04 00:20:32

例如,您可以将其设置为异步

代码语言:javascript
复制
   getData = async () => {
       const value = await AsyncStorage.getItem('Yourkey');
        this.setState({key: value})

  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49086046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档