Javascript 在异步存储中持久化API数据

Javascript 在异步存储中持久化API数据,javascript,react-native,Javascript,React Native,我想在没有internet连接的情况下重新打开React本机应用程序时保留获取的API数据(数组) 使用Axios获取和存储状态为的数据和AsyncStorage工作正常 当在没有互联网连接的情况下打开应用程序时,有一个无休止的加载时间,我不知道如何触发捕获承诺并使用我存储的数据作为状态的新数据 这是我的代码: componentWillMount(){ axios.get('http://example.com/api_get_request') .then

我想在没有internet连接的情况下重新打开React本机应用程序时保留获取的API数据(数组)

使用Axios获取和存储状态为的数据和
AsyncStorage
工作正常

当在没有互联网连接的情况下打开应用程序时,有一个无休止的加载时间,我不知道如何触发捕获承诺并使用我存储的数据作为状态的新数据

这是我的代码:

componentWillMount(){
        axios.get('http://example.com/api_get_request')
          .then((response) => {
              console.log('connection ok!');
              AsyncStorage.setItem('landen', JSON.stringify(response.data));
              this.setState({
                landen: response.data,
                loading: false,
              });
              //DATA SET TO STATE + ASYNCSTORAGE
          })
          .catch(error => {
            console.log(error.response);
            AsyncStorage.getItem('landen').then((value) => {
              this.setState({
                landen: JSON.parse(value),
                loading: false,
              });
              //NO CONNECTION -> ASYNC DATA
            });
          }); 
}
您可以使用来检查internet连接,并根据连接执行如下代码

componentWillMount() {
  NetInfo.isConnected.fetch().then(isConnected => {
    if (isConnected) {
      axios.get('http://example.com/api_get_request')
        .then((response) => {
          AsyncStorage.setItem('landen', JSON.stringify(response.data));
          this.setState({
            landen: response.data,
            loading: false,
          });
        })
    } else {
      AsyncStorage.getItem('landen').then((value) => {
        this.setState({
          landen: JSON.parse(value),
          loading: false,
        });
      });
    }
  });
}

请注意,上面的代码没有经过测试,您可能需要在这里和那里修复一些东西,但您将得到这个概念。另外,您可能需要添加
catch
块来捕获意外错误。

对于管理一些小信息,使用
异步存储是一个好主意。但如果您需要管理所有应用程序状态,将代码传递给Redux并使用以下库是一个很好的做法: