我目前正在尝试在我的本机应用程序中实现一些功能,如果设备处于脱机状态,我会使用本地存储的信息,并在设备处于联机状态时执行提取。
我在阅读How to handle network failure in React-Native, when network is off之后使用了NetInfo,但不幸的是我遇到了一个错误,NetInfo总是在线下返回。我发现this github issue,它建议我将RCTReachability.m中的主机从'htpp://apple.com'更改为'apple.com'。但是,我在项目目录中找不到具有该名称的文件。相反,我发现在任何文件中都只提到'apple.com',这是在RCTNetInfo.m中,它的格式正确。
有人知道解决此问题的方法吗?或者,如果设备处于联机状态,可能采用不同的方式执行一个操作,如果设备处于脱机状态,可能采用另一种方式?
以下是相关代码:
fetchData() {
NetInfo.isConnected.fetch().done((isConnected) => {
console.log('First, is ' + (isConnected ? 'online' : 'offline'));
if ( isConnected )
{
fetch(REQUEST_URL)
.then((response) => response.json())
.then((responseData) => {
store.save('contacts', responseData.feed.entry)
.then(() => store.get('contacts'))
.then((contacts) => {
this.setState({
dataSource: this.state.dataSource.cloneWithRows(contacts),
isLoading: false
});
})
})
.catch((error) => { console.error(error); });
}
else
{
store.get('contacts')
.then(contacts => {
if (contacts == null)
{
this.setState({
dataSource: this.state.dataSource.cloneWithRows(CONTACT_DATA),
isLoading: false
});
}
else
{
this.setState({
dataSource: this.state.dataSource.cloneWithRows(contacts),
isLoading: false
});
}
})
}
});
}