我想在没有互联网连接的情况下重新打开React Native应用程序时存储获取的API数据。 在没有互联网连接的情况下打开应用程序时, 我使用NetInfo来确定连接是否正常,如果有连接就显示正常,否则,如果没有连接(脱机),则负载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中添加了这一行
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
当我在控制台上登录state.isConnected时,即使关闭我的PC上的Internet,它也始终为true。 如果我关闭了移动数据,则显示错误无法连接到调试器。