React native 反应本机webview:按下back按钮时退出应用程序

React native 反应本机webview:按下back按钮时退出应用程序,react-native,webview,navigation,React Native,Webview,Navigation,我使用的是react native,我在webview中的页面之间导航时遇到问题,因为每当我按下“后退”按钮时,它就会一直关闭。我尝试了这个,当我按下后退按钮时出现错误未定义不是对象(评估'this.props.navigation.goback')有人能帮我吗?多谢各位 import React, { Component } from 'react'; import { WebView } from 'react-native-webview';

我使用的是react native,我在webview中的页面之间导航时遇到问题,因为每当我按下“后退”按钮时,它就会一直关闭。我尝试了这个,当我按下后退按钮时出现错误未定义不是对象(评估'this.props.navigation.goback')有人能帮我吗?多谢各位

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



export default class App extends Component {
  constructor(props) {
    super(props)
    this.handleBackButtonClick = this.handleBackButtonClick.bind(this);
}

componentWillMount() {
    BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick);
}

componentWillUnmount() {
    BackHandler.removeEventListener('hardwareBackPress', this.handleBackButtonClick);
}

handleBackButtonClick() {
    this.props.navigation.goBack(null);
    return true;
}
 
render(){
          return (
            <WebView
                style={{ marginTop: 0 }}
                source={{ uri: 'https://www.youtube.com' }}
                
            />
          );
        }
       }
import React,{Component}来自'React';
从“react native WebView”导入{WebView};
从“react native”导入{BackHandler};
导出默认类应用程序扩展组件{
建造师(道具){
超级(道具)
this.handleBackButtonClick=this.handleBackButtonClick.bind(this);
}
组件willmount(){
BackHandler.addEventListener('hardwareBackPress',this.handleBackButtonClick);
}
组件将卸载(){
BackHandler.removeEventListener('hardwareBackPress',this.handleBackButtonClick);
}
把手按钮手柄{
this.props.navigation.goBack(null);
返回true;
}
render(){
返回(
);
}
}
此代码有效

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



export default class App extends Component {
  webView = {
    canGoBack: false,
    ref: null,
  }

  onAndroidBackPress = () => {
    if (this.webView.canGoBack && this.webView.ref) {
      this.webView.ref.goBack();
      return true;
    }
    return false;
  }

  componentWillMount() {
    if (Platform.OS === 'android') {
      BackHandler.addEventListener('hardwareBackPress', this.onAndroidBackPress);
    }
  }

  componentWillUnmount() {
    if (Platform.OS === 'android') {
      BackHandler.removeEventListener('hardwareBackPress');
    }
  }
 
render(){
  return (
    <WebView
        style={{ marginTop: 0 }}
        source={{ uri: 'https://www.youtube.com' }}
        useWebKit={true}
        ref={(webView) => { this.webView.ref = webView; }}
        onNavigationStateChange={(navState) => { this.webView.canGoBack = navState.canGoBack; }}
    />
  );
}
}
import React,{Component}来自'React';
从“react native WebView”导入{WebView};
从“react native”导入{BackHandler};
导出默认类应用程序扩展组件{
网络视图={
坎戈巴克:错,
ref:null,
}
onAndroidBackPress=()=>{
if(this.webView.canGoBack&&this.webView.ref){
this.webView.ref.goBack();
返回true;
}
返回false;
}
组件willmount(){
如果(Platform.OS==='android'){
BackHandler.addEventListener('hardwareBackPress',this.onAndroidBackPress);
}
}
组件将卸载(){
如果(Platform.OS==='android'){
removeEventListener('hardwareBackPress');
}
}
render(){
返回(
{this.webView.ref=webView;}}
onNavigationStateChange={(navState)=>{this.webView.canGoBack=navState.canGoBack;}}
/>
);
}
}