反应-籍贯︰ 回去 android 硬件背 button 按下

标签: Android webView
发布时间: 2016/10/10 21:10:24
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想添加回去重新 webviewandroid 后退按钮被按下,仍然不可能设法使它工作。

这是我的代码︰

<WebView
    ref={WEBVIEW_REF}
    source={source}
    domStorageEnabled={true}
    onNavigationStateChange={this.onNavigationStateChange}
/>

componentDidMount() {
    BackAndroid.addEventListener('hardwareBackPress', function() {
        if(this.state.backButtonEnabled) {
            this.refs[WEBVIEW_REF].goBack();
            return true;
        }
    });
};

onNavigationStateChange = (navState) => {
    this.setState({
        backButtonEnabled: navState.canGoBack,
    });
};

与上面的代码我得到未定义的错误不是对象的 this.state.backButtonEnabled (这在状态中设置)。

比我只是想看看是否 goBack 工作所以我删除了 if 语句和不至于是未定义的错误不是对象 this.refs[WEBVIEW_REF]。

这最好的解决方案是什么?

解决方法 1:

class MyComponent extends Component {
    state = {};
    componentDidMount(){
         BackAndroid.addEventListener('hardwareBackPress', this.backHandler);
    }
    componentWillUnmount(){
         BackAndroid.removeEventListener('hardwareBackPress', this.backHandler);
    }
    backHandler = () => {
        if(this.state.backButtonEnabled) {
            this.refs[WEBVIEW_REF].goBack();
            return true;
        }
    }
}

1) 绑定你 handler 2) 你应该静态上卸载。

官方微信
官方QQ群
31647020