zoukankan      html  css  js  c++  java
  • 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;

    总结:

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

  • 相关阅读:
    juniper ALARM亮红灯
    笔记本设置wifi热点
    基于apache+php+mysql 编译安装详解(转载)
    CentOS6.X 安装MySQL 5.X
    spring 多数据源切换
    Java Reflection(十二):动态类加载与重载
    Java Reflection(十一):动态代理
    Java Reflection(十):数组
    Java Reflection(九):泛型
    Java Reflection(八):注解
  • 原文地址:https://www.cnblogs.com/pengsi/p/7682439.html
Copyright © 2011-2022 走看看