我需要检查本机iOS中的Internet连接
我会尝试以下代码:
NetInfo.isConnected.fetch().then(isConnected => {
console.log(isConnected);
});
可以在本机android应用程序中正常工作, 但它总是在本机iOS中返回'false'。
答案 0 :(得分:23)
react native's github目前存在一个未解决的问题。
您可以在那里看到讨论,但简而言之 - fetch
始终返回false
,但您可以通过侦听连接已更改事件来解决此问题。
来自那里的代码示例:
componentDidMount() {
NetInfo.isConnected.addEventListener('change', this.handleConnectionChange);
NetInfo.isConnected.fetch().done(
(isConnected) => { this.setState({ status: isConnected }); }
);
}
componentWillUnmount() {
NetInfo.isConnected.removeEventListener('change', this.handleConnectionChange);
}
handleConnectionChange = (isConnected) => {
this.setState({ status: isConnected });
console.log(`is connected: ${this.state.status}`);
}
修改强>
好像这个问题一直是worked on。
此外,change
事件已重命名为connectionChange
。更新了解决方法代码:
componentDidMount() {
NetInfo.isConnected.addEventListener('connectionChange', this.handleConnectionChange);
NetInfo.isConnected.fetch().done(
(isConnected) => { this.setState({ status: isConnected }); }
);
}
componentWillUnmount() {
NetInfo.isConnected.removeEventListener('connectionChange', this.handleConnectionChange);
}
handleConnectionChange = (isConnected) => {
this.setState({ status: isConnected });
console.log(`is connected: ${this.state.status}`);
}
<强>更新强>
不推荐使用change
事件类型。请考虑使用connectionChange
事件类型。
答案 1 :(得分:0)