Sar*_*mar 7 javascript react-native react-native-ios
我需要在本机iOS中检查Internet连接
我会尝试以下代码:
NetInfo.isConnected.fetch().then(isConnected => {
console.log(isConnected);
});
Run Code Online (Sandbox Code Playgroud)
在本机Android应用程序中可以正常工作,但它总是在本机iOS中返回'false'.
Mot*_*Azu 25
目前在react native的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}`);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
好像这个问题一直努力的.此外,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}`);
}
Run Code Online (Sandbox Code Playgroud)
更新:
该change事件类型已过时.考虑使用connectionChange事件类型.