RN iOS网络是否连接bug

本文介绍了一个React Native项目中遇到的网络检测问题。针对NetInfo模块在iOS设备上首次请求时出现的bug,提供了详细的解决方案,并介绍了如何使用fetch方法自行实现网络状态检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值