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
使用Netinfo在异步存储中持久化API数据_Api_React Native - Fatal编程技术网

使用Netinfo在异步存储中持久化API数据

使用Netinfo在异步存储中持久化API数据,api,react-native,Api,React Native,我想在没有internet连接的情况下重新打开React本机应用程序时存储获取的API数据。 在没有internet连接的情况下打开应用程序时, 我使用NetInfo来确定连接是否正常,如果有连接,它会显示正常,否则如果没有连接(脱机),load ActivityIndicator会显示一点,然后什么也不显示 我使用了另一种逻辑,比如检查state是否为null,然后获取api并存储数据,否则从存储中获取数据,这样就可以了,但如果我使用react native run android重新启动应用

我想在没有internet连接的情况下重新打开React本机应用程序时存储获取的API数据。 在没有internet连接的情况下打开应用程序时, 我使用NetInfo来确定连接是否正常,如果有连接,它会显示正常,否则如果没有连接(脱机),load ActivityIndicator会显示一点,然后什么也不显示

我使用了另一种逻辑,比如检查state是否为null,然后获取api并存储数据,否则从存储中获取数据,这样就可以了,但如果我使用react native run android重新启动应用程序,数据将永远不会出现

这是我的代码:

NetInfo.fetch().then(state => {
    if (state.isConnected) {
      getArticles(this.state.url)
        .then((data) => {
            // console.log('connection ok!');
            AsyncStorage.setItem('obj', JSON.stringify(data));
            this.setState({
              isLoading: false,
        data: data,
            });
            //DATA SET TO STATE + ASYNCSTORAGE
        })
     }
    else {
      AsyncStorage.getItem('obj').then((value) => {
          // console.log('connection not ok!');
        this.setState({
          isLoading: false,
            data:JSON.parse(value)
        });
      });
    }
 });
}
这是我没有Netinfo的代码:

componentDidMount() {
   if(this.state.data=='null'){
      getArticles(this.state.url)
        .then((data) => {
            // console.log('connection ok!');
            AsyncStorage.setItem('obj', JSON.stringify(data));
            this.setState({
              isLoading: false,
        data: data,
            });
            //DATA SET TO STATE + ASYNCSTORAGE
        })
     }
    else {
      AsyncStorage.getItem('obj').then((value) => {
          // console.log('connection not ok!');
        this.setState({
          isLoading: false,
            data:JSON.parse(value)
        });
      });
    }
}
我在android中添加了这一行

当我在控制台上记录state.isConnected时,即使在我的电脑上关闭internet,它也始终为真。 如果我关闭移动数据,它显示错误无法连接到debbuger