ReactNative

React Native 基础之获取网络信息

2019-03-01  本文已影响1人  Kevin_小飞象

在 React Native 中,NetInfo API 为我们提供了获取网络状态的方法。通过 NetInfo 我们可以检测到手机客户端设备当前的联网/断网状态。

属性&方法

获取网络状态类型

上面提到使用 fetch() 方法可以获取到网络状态,在不同的平台下可能得到的状态值是不一样的。
(1)iOS 平台

(2)Android 平台

实例

1. 逻辑代码

import React, {Component} from 'react';
import {
  StyleSheet, 
  Text, 
  NetInfo,
  View
} from 'react-native';

export default class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      isConnected: null,
      connectionInfo:null
    };
    
  }

  componentDidMount() {
    //检测网络是否连接
    NetInfo.isConnected.fetch().done((isConnected) => {
      this.setState({isConnected});
    });

    //检测网络连接信息
    NetInfo.fetch().done((connectionInfo)=> {
      this.setState({connectionInfo});
    });

    //监听网络变化事件
    NetInfo.addEventListener('change',(networkType) => {
      this.setState({isConnected:networkType});
    });
  }

  

  render() {
    return (
      <View style = {styles.container}>
        <Text style={styles.text}>
          当前的网络状态:
          {this.state.isConnected ? '网络在线': '离线'}
        </Text>
        <Text style={styles.text}>
          当前网络连接类型: 
          {this.state.connectionInfo}
        </Text>
        <Text style={styles.text}>
          当前连接网络是否计费:
          {NetInfo.isConnectionExpensive === true ? '需要' : '不要'}
        </Text>
      </View>
    );
  }

}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    paddingTop: 30,
    backgroundColor: '#F5FCFF',
  },
  text: {
    fontSize: 18,
    margin: 10,
    textAlign: 'left'
  },
});

2. 效果图

netinfo.jpg
上一篇下一篇

猜你喜欢

热点阅读