繁体   English   中英

AsyncStorage.getItem 返回未定义(即使使用.then 和.parse)

[英]AsyncStorage.getItem returns undefined(even with .then and .parse)

我正在尝试将数据存储在 AsyncStorage 中并将它们加载回来(显然)。 The.setItem function 有效,当我调用它时,通知会在 iOS 模拟器的底部弹出。 但是, .getItem function 不起作用,当我 console.log 它时,返回undefined 我有两个函数来存储和获取数据:

    setData = (rawDataToStore, keyToStore) => {
        data_store = JSON.stringify(rawDataToStore);
        AsyncStorage.setItem(keyToStore, data_store, () => {
            console.warn('Stored data!')
        } )
    }

    getData = (keyToSearch) => {
        AsyncStorage.getItem(keyToSearch).then(storage => {
            parsed_data = JSON.parse(storage);
            return parsed_data
        }).catch(e => console.warn(e))
    }

我刚刚测试了我的 render() 中的函数:

保存数据:

this.setData({value: 1}, "test_data");

加载数据:

console.log(this.getData("test_data"));

console.log 只是返回未定义。

我对 Asyncstorage 完全陌生,但我做错了什么?

您的console.log返回undefined ...原因,您的setData function 尚未完成工作...您必须先await它,因为它是异步操作。

class YourComponent extends React.Component {
  async componentDidMount() {
    await this.setData();
    const data = await this.getData();

    console.log('data returned', data);
  }

  setData = async (rawDataToStore, keyToStore) => {
    data_store = JSON.stringify(rawDataToStore);
    await AsyncStorage.setItem(keyToStore, data_store);
  };

  getData = async keyToSearch => {
    let parsed_data = null;

    const storage = await AsyncStorage.getItem(keyToSearch);
    if (storage) {
      parsed_data = JSON.parse(storage);
      console.log('Data in AsyncStorage: ', parsed_data);
    }

    return parsed_data;
  };
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM