使用Netinfo

时间:2020-05-19 08:06:59

标签: api react-native

我想在没有互联网连接的情况下重新打开React Native应用程序时存储获取的API数据。 在没有互联网连接的情况下打开应用程序时, 我使用NetInfo来确定连接是否正常,如果有连接就显示正常,否则,如果没有连接(脱机),则负载ActivityIndi​​cator会出现一点,然后什么也没出现,

我使用另一种逻辑,例如检查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中添加了这一行 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

当我在控制台上登录state.isConnected时,即使关闭我的PC上的Internet,它也始终为true。 如果我关闭了移动数据,则显示错误无法连接到调试器。

0 个答案:

没有答案