React Native WebView处理android硬件按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React Native WebView处理android硬件按钮相关的知识,希望对你有一定的参考价值。

我有一个应用程序(完全是Webview),我正在尝试处理android硬件按钮,从第二页返回到第一页。我现在的问题是该按钮不再关闭应用程序,我不知道该怎么办。这是我的代码:

export default class App extends Component {
  constructor(props) {
  super(props)
    this.state={

     };

this.handleBackButtonClick = this.handleBackButtonClick.bind(this);
}

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

onNavigationStateChange(navState){
  console.log(JSON.stringify(navState));
  canGoBack = navState.url == initialUrl && !navState.loading
}


handleBackButtonClick() {
     this.refs[WEBVIEW_REF].goBack();
     return true;
} 
答案

handleBackButtonClick的返回值决定了应用程序是否继续运行。

目前,您总是返回true。相反,您可以检查当前导航状态是否要关闭应用程序,并相应地返回false

handleBackButtonClick() {
    const canGoBack = someCalculation();
    if(canGoBack)
        this.refs[WEBVIEW_REF].goBack();
    }
    return canGoBack;
} 

以上是关于React Native WebView处理android硬件按钮的主要内容,如果未能解决你的问题,请参考以下文章

在 React Native 应用程序中调试 WebView

如何在 appState 更改时重新加载 react-native-webview 内容

强制 React Native Web View 忽略 webview 的缓存版本

React Native 问题:WebView 已从 React Native 中移除

WebView(react-native-webview)在 Expo SDK36 中获取错误代码 -1

React Native WebView 状态栏