React Native NetInfo始终返回脱机状态

时间:2016-08-02 21:38:31

标签: ios facebook reactjs react-native fetch

我目前正在尝试在我的本机应用程序中实现一些功能,如果设备处于脱机状态,我会使用本地存储的信息,并在设备处于联机状态时执行提取。

我在阅读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
                    });
                }
            })
        }
    });


}

0 个答案:

没有答案