gpt4 book ai didi

android - React-Native:返回按下android硬件后退按钮

转载 作者:可可西里 更新时间:2023-11-01 19:09:24 25 4
gpt4 key购买 nike

我正在尝试在按下 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 is not an object this.state.backButtonEnabled(在状态中设置)。

我只是想看看 goBack 是否有效,所以我删除了 if 语句,然后我得到了错误 undefined is not an object this.refs[WEBVIEW_REF]。

最好的解决方案是什么?

最佳答案

想要添加一个完整的例子以防它对任何人有帮助:

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

class ExampleWebView 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
source={{ uri: "https://www.google.com" }}
ref={(webView) => { this.webView.ref = webView; }}
onNavigationStateChange={(navState) => { this.webView.canGoBack = navState.canGoBack; }}
/>
);
}
}

关于android - React-Native:返回按下android硬件后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39446077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com