加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

React-Native:按下Android硬件后退按钮

发布时间:2020-12-15 05:06:33 所属栏目:百科 来源:网络整理
导读:我试图在按下 Android后退按钮时添加回webview,我仍然无法使其工作. 这是我的代码: WebView ref={WEBVIEW_REF} source={source} domStorageEnabled={true} onNavigationStateChange={this.onNavigationStateChange}/componentDidMount() { BackAndroid.addE
我试图在按下 Android后退按钮时添加回webview,我仍然无法使其工作.

这是我的代码:

<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,});
};

使用上面的代码我得到错误undefined不是一个对象this.state.backButtonEnabled(在状态中设置).

比我只是想看看goBack是否有效,所以我删除了if语句而不是我得到错误undefined不是一个对象this.refs [WEBVIEW_REF].

什么是最好的解决方案?

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

1)绑定你的处理程序2)不要忘记卸载时删除Listener.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读