Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在异步存储获取+;国家?_Javascript_React Native - Fatal编程技术网

Javascript 在异步存储获取+;国家?

Javascript 在异步存储获取+;国家?,javascript,react-native,Javascript,React Native,我正在尝试为我的react本机应用程序构建设置屏幕。我正在使用异步存储来保存数据。以下是我目前的设置方式 状态最初具有默认值。任何时候更新一个设置组件,它都会将数据放入异步存储,并更新状态以更新UI,并显示每个设置的正确值 问题是在重新加载应用程序时更新状态,因此所有设置组件都会反映为用户离开时的状态。每次我重新编译时,设置都会返回到初始默认值 以下是我试图通过以下方式实现这一目标的代码: async componentWillMount(){ settings = [

我正在尝试为我的react本机应用程序构建设置屏幕。我正在使用异步存储来保存数据。以下是我目前的设置方式

状态最初具有默认值。任何时候更新一个设置组件,它都会将数据放入异步存储,并更新状态以更新UI,并显示每个设置的正确值

问题是在重新加载应用程序时更新状态,因此所有设置组件都会反映为用户离开时的状态。每次我重新编译时,设置都会返回到初始默认值

以下是我试图通过以下方式实现这一目标的代码:

async componentWillMount(){
    settings = 
    [
      'buildtol',
      'decimal_places',
      'response_time',
      'device_number'
    ]

    await AsyncStorage.multiGet(settings, (err, stores)=> {
      for(i = 0; i < stores.length; ++i){
        let key = stores[i][0];
        let val = stores[i][1];
        try{
        this.setState({key : val})
        console.log('key: ' + key + ' val: ' + val);
        }catch(e){
          console.log(e);
        }

      }
    })

  }
异步组件willmount(){ 设置= [ “buildtol”, “小数点”, “响应时间”, “设备号” ] 等待AsyncStorage.multiGet(设置,(错误,存储)=>{ 对于(i=0;i
如果我只执行一个get,而不是多个get,这是可行的。一旦我尝试像上面这样做,它就不会反映UI中的变化。

只是出于好奇,为什么在使用回调时使用async Wait?除了有人针对类似问题在线程上建议它之外,没有任何真正的原因,所以我想我应该抛出一个hail mary并尝试一下。当你使用multiget时,你得到了正确的存储吗?我的意思是,你确定除setstate之外的所有功能都正常工作吗?是的,我的console.log行显示了正确的键/值。因此,它正在正确地获取它。只是没有正确更新状态。我想我可能只是不正确地完成了这项任务。我可能应该在应用程序加载时加载这些值,然后将它们作为道具传递到屏幕上。仍然有点不确定这种任务的设计理念应该如何。