• React Native使用NetInfo对当前系统网络的判断


    有网状态:

    断网状态:

    代码如下:

    注意:第一次参考了http://www.hangge.com/blog/cache/detail_1614.html代码,一直显示的是unknow状态。。。

    最后处理代码如下:

    import React, { Component } from 'react';
    import {
        AppRegistry,
        StyleSheet,
        Text,
        View,
        NetInfo
    } from 'react-native';
    
    // 参考博客: http://blog.csdn.net/zzx2436125/article/details/77482308
    import App from './App';
    
    class Root extends React.Component {
    
        //构造函数
        constructor(props) {
            super(props);
            this.state = {
                isConnected: null,
                connectionInfo: null
            };
          }
         
          //页面的组件渲染完毕(render)之后执行
          componentDidMount() {
    
            //检测网络是否连接
            NetInfo.isConnected.fetch().done((isConnected) => {
                this.setState({isConnected});
            });
         
            //检测网络连接信息
            NetInfo.fetch().done((connectionInfo) => {
                this.setState({connectionInfo});
            //     alert(connectionInfo);
            });
    
            //监听网络变化事件
            NetInfo.addEventListener('change', (networkType) => {
            this.setState({isConnected: networkType})
                alert(networkType);
            })
         }
    
        async componentWillMount() {
            let connect = false;
            const netChange = (isConnect) => {
              // NetInfo.isConnected.removeEventListener('change', netChange);
              connect = isConnect;
            }
            
            // RN获取网络状态(true/false)
            async function getNetWorkState() {
              if (Platform.OS === 'ios') {
                // alert(connect);
                await NetInfo.isConnected.addEventListener('change', netChange);
                return connect;
              } else {
                return await NetInfo.isConnected.fetch();
              }
            }
            return await NetInfo.isConnected.addEventListener('change', netChange);
        }
    
        // 移除监听
        componentWillUnMount() {
            NetInfo.removeEventListener('change', netChange);
        }
    
        render() {
            return (
                <App />
            )
        }
    }
    
    export default Root;

    总结:

    这个检测网络状态他是实时检测断网和联网状态的,可以保存状态,每次请求的时候直接取状态即可。

  • 相关阅读:
    什么是多线程中的上下文切换?
    什么是基本表?什么是视图?
    什么是存储过程?用什么来调用?
    随意写文件命令?怎么向屏幕输出带空格的字符串,比如” hello world”?
    NULL 是什么意思 ?
    Mock 或 Stub 有什么区别?
    什么叫视图?游标是什么?
    什么是微服务中的反应性扩展?
    什么是线程组,为什么在 Java 中不推荐使用?
    Java 中用到的线程调度算法是什么?
  • 原文地址:https://www.cnblogs.com/pengsi/p/7682439.html
Copyright © 2020-2023  润新知