【问题标题】:Auto update Net Info status in react-nativereact-native 中的自动更新网络信息状态
【发布时间】:2020-09-22 12:51:51
【问题描述】:

我正在使用 https://github.com/react-native-community/react-native-netinfo 检查我的 react-native 应用程序中的网络连接。网络丢失后网络恢复时如何自动获取网络连接?

下面是我使用的代码。

import React, { Component } from 'react';
import NetInfo from '@react-native-community/netinfo'
import { View, Text,StyleSheet,Dimensions } from 'react-native';
export default class NetStatus extends Component {

    constructor(props) {
        super (props)
        this.state = {
            isConnected:''
  };
}
  
  componentDidMount() {
    this.handleConnectivityChange()
  }

  componentWillUnmount() {
    this.handleConnectivityChange()
  }

  handleConnectivityChange(){
    NetInfo.fetch().then(isConnected => {
        this.setState({ isConnected:isConnected.isInternetReachable });
        console.log('isConnected : ', isConnected);
    })
  };
 
  render() {
    return (
        <View>
        {this.state.isConnected  === true ?
            null
           :(
             <View style={styles.container}>
                <Text style={{color:'#FFF'}}>
                You are not connected to internet....!
                </Text>
             </View>
           )
         }
         </View>
    );
  }
}

如何在不每次网络丢失网络又回来的情况下获取网络状态?

【问题讨论】:

    标签: react-native react-native-community-netinfo


    【解决方案1】:

    你必须给 NetInfo 添加一个监听器。

    以下代码可以帮助您,

      const [networkState, setNetworkState] = useState(true);
    
      const onNetworkStateChange = (newState) => {
        setNetworkState(newState.isConnected);
        if (!newState.isConnected) {
          // do anything you want
        }
      };
    
      const initialCheck = () =>
        NetInfo.fetch().then((connectionInfo) => {
          setNetworkState(connectionInfo.isConnected);
        });
    
      useEffect(() => {
        initialCheck();
        NetInfo.addEventListener(onNetworkStateChange);
      }, []);
    

    【讨论】:

    • 我有一个小问题,如果我想添加一个监听器,我应该在每个屏幕中添加它,我必须用disconnected image 替换内容吗?或者在根文件中添加这个监听器?
    • 是的,不要在所有页面上都添加监听器,明智地使用它。如果需要,使用一些上下文 API 或一些全局状态管理。
    • @senthilbalaji 我正在使用类组件和构造函数,如何在类组件中添加侦听器。
    • 从componentDidMount做吧
    猜你喜欢
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 2020-09-06
    • 2020-04-24
    • 2022-01-22
    相关资源
    最近更新 更多