美文网首页webviewreact native 系列
React Native——嵌套WebView中的返回处理

React Native——嵌套WebView中的返回处理

作者: 星灬缘 | 来源:发表于2018-01-24 15:44 被阅读1587次

直接看代码:

import React, { Component } from 'react';
import { WebView, Platform, BackHandler } from 'react-native';




export default class BoxDemo extends Component {
  onNavigationStateChange = navState => {
    this.setState({
      backButtonEnabled: navState.canGoBack
    });
  };

  // //自定义返回事件
  // _goBackPage = () => {

  //   //  官网中描述:backButtonEnabled: false,表示webView中没有返回事件,为true则表示该webView有回退事件
  //   if (this.state.backButtonEnabled) {
  //     this.refs['webView'].goBack();
  //   } else {//否则返回到上一个页面
  //     this.nav.goBack();
  //   }
  // };

  // 监听原生返回键事件
  componentDidMount() {
    if (Platform.OS === 'android') {
      BackHandler.addEventListener('hardwareBackPress', this.onBackAndroid);
    }
  }

  onBackAndroid = () => {
    //  官网中描述:backButtonEnabled: false,表示webView中没有返回事件,为true则表示该webView有回退事件
    if (this.state.backButtonEnabled) {
      this.refs['webView'].goBack();
      return true;
    } else {
     if (this.lastBackPressed && this.lastBackPressed + 2000 >= Date.now()) {
        //最近2秒内按过back键,可以退出应用。
        return false;
      }
      this.lastBackPressed = Date.now();
      ToastAndroid.show('再按一次退出应用', ToastAndroid.SHORT);
      return true;
    }
  };



  render() {
    return (
      <WebView
        source={{ uri: 'http://192.168.0.124:9051/' }}
        style={{ width: '100%', height: '100%' }}
        ref="webView"
        onNavigationStateChange={this.onNavigationStateChange}
      />
    );
  }
}

原文地址:http://www.cnblogs.com/zhengyeye/p/8036598.html

相关文章

网友评论

    本文标题:React Native——嵌套WebView中的返回处理

    本文链接:https://www.haomeiwen.com/subject/jjyuaxtx.html