当没有互联网时,对本机WebView的反应



我想在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}
    ...
 />

我希望帮助您,我不记得确切地使用它,但是我认为这是开始

的好方法

相关内容

  • 没有找到相关文章

最新更新