我想在WebView没有Internet显示没有Internet的消息时进行。我搜索了有关它的东西,但找不到它。有人能帮我吗 ?对不起,我是新来的反应。
编辑1
import React, { Component } from 'react'
import { StyleSheet, Text, View, NetInfo } from 'react-native';
import WebViewComp from './web_view_comp.js'
export default class App extends Component {
constructor(){
super();
this.state={
connection_Status : ""
}
}
componentDidMount() {
NetInfo.isConnected.addEventListener(
'connectionChange',
this._handleConnectivityChange
);
NetInfo.isConnected.fetch().done((isConnected) => {
if(isConnected == true){
this.setState({connection_Status : "Online"})
}
else{
this.setState({connection_Status : "Offline"})
}
});
}
componentWillUnmount() {
NetInfo.isConnected.removeEventListener(
'connectionChange',
this._handleConnectivityChange
);
}
_handleConnectivityChange = (isConnected) => {
if(isConnected == true){
this.setState({connection_Status : "Online"})
}
else{
this.setState({connection_Status : "Offline"})
}
};
render() {
if (this.state.connection_Status == "Online") {
return (
<WebViewComp/>
)
} else {
return (
<View style={styles.MainContainer}>
<Text style={{fontSize: 20, textAlign: 'center', marginBottom: 20}}> Você está { this.state.connection_Status }</Text>
</View>
)
}
}
}
const styles = StyleSheet.create({
MainContainer: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
padding: 20
},
TextStyle: {
fontSize:20,
textAlign: 'center',
}
});
`
我根据帮助编辑了代码,我得到了这个结果,但是我相信,如果该人连接移动互联网并且没有移动数据可能会遇到问题。
您可以使用onError
的CC_1事件这样:
//declarations and imports
state={isError:false}
render(){
return(
<WebView onError={()=>alert("Something went wrong")} />
)}
如果您想知道是否有Internet,请跟踪onError
的错误。
您可以使用React Netinfo,这是文档中的一个示例:
NetInfo.isConnected.fetch().then(isConnected => {
console.log('First, is ' + (isConnected ? 'online' : 'offline'));
});
function handleFirstConnectivityChange(isConnected) {
console.log('Then, is ' + (isConnected ? 'online' : 'offline'));
NetInfo.isConnected.removeEventListener(
'connectionChange',
handleFirstConnectivityChange
);
}
NetInfo.isConnected.addEventListener(
'connectionChange',
handleFirstConnectivityChange
);
如果要检查特定的URL,则可以发送请求并更新状态
让req =等待fetch('https://www.someurl.com');让ISCONNETDEN = REQ.STATUS === 200;
React-Native的Webview具有一个Props调用onMessage
,您可以使用它来知道没有Internet时知道什么URL响应。
onWebViewMessage(event: any) {
let msgData;
try {
// msgData will have the url from webview
// and event have another props
msgData = event.nativeEvent.data;
// check and do something
} catch (err) {
console.warn(err);
return;
}
...
}
<WebView
source={{ uri: "http://www.youtube.com/" }}
onMessage={this.onWebViewMessage}
...
/>
我希望帮助您,我不记得确切地使用它,但是我认为这是开始