react-native - react-native 中的自动更新网络信息状态
问题描述
我正在使用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>
);
}
}
当网络丢失并且网络再次恢复时,如何在不获取网络状态的情况下获取网络状态?
解决方案
您必须向 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);
}, []);
推荐阅读
- c++ - 使用 Prim 算法计算最小生成树:如何让它变得简单?
- java - java - 如何创建一个循环以在java中的ArrayList中找到每个不同的数字?
- node.js - 找不到模块“猫鼬”
- javascript - 来自属性值的样式元素
- docker - Docker Compose Sql server 启动时自动创建数据库和表
- sql - SQL 连接和组问题
- python - 定义 Django 模型约束
- x86-64 - (.text+0x4e): 未定义的对 `printf' nasm 的引用
- python - 使用 Python 将漂亮的汤刮到 MySQL。坚持 if string contains do else do something else
- python - 使用 smtplib 和 python 发送电子邮件时设置发件人姓名