react native 是有判斷網路是否連接這個接口的NetInfo。
可以通過這樣來判斷:isConnected=true 有網絡,反之沒有網絡。
data = await NetInfo.isConnected.fetch().then((isConnected) => {
console.log('isConnected',isConnected);
if(!isConnected){
DeviceEventEmitter.emit('data', 'NoNetWork');//跳轉到沒有網路界面
return false;
}else{
return true;
}
}).catch((err)=>{
console.log('HttpUtil 異常');
return false;
});
這個接口Android上面沒有問題,但是在iOS上面有bug。
如果是第一次網絡請求,收集有網絡而服務器不可以連接,這個接口返回的isConnected 依然是false,手機沒有網絡。
解決辦法:
這個錯誤是在rn0.22甚至更早就有了,官方一直在改還是沒有修改好。所以直接棄用這個接口。可以通過如下方式判斷手機是否有網絡。
isNet = await fetch("https://www.baidu.com");
if(isNet.status=200){
console.log('有網絡');
HttpRequest.NetFlag = true;
return true;
}else{
console.log('沒有網絡');
DeviceEventEmitter.emit('data', 'NoNetWork');
return false;
}
自己使用react-native-fetch-blob封裝的Http工具類。
get,post, 圖片上傳, 是否有網絡判斷 ,請求超時 ,數據解析等錯誤通過toast彈出https://github.com/wuyunqiang/ReactNativeUtil/issues/5