我正在使用来自 Wix(版本 2 )的 React-Native-Navigation在我的 React Native 应用程序中设置导航。我正在使用中心部分为堆栈的布局。当用户选择一个侧面菜单项时,所选视图被推送到该中心堆栈上。如果用户在 Android 上按下后退按钮,则视图将从堆栈中弹出,但我并不总是希望这种情况发生,主要是如果他们选择的视图是.sideMenu
WebView
如果视图是 a WebView
,我想手动处理用户按下硬件后退按钮。如果WebView
可以“ goBack
”,则视图将返回,但如果不能,则视图将从堆栈中弹出(正常情况下)。
我尝试使用BackHandler
from 类覆盖后退按钮按下react-native
,这使我可以捕获该按下并在可能的情况下WebView
返回,但是从堆栈中弹出视图的行为也会触发。React-Native-Navigation v2 中有没有办法告诉它,“嘿,我知道了,除非我告诉你,否则不要弹出。”?
本节我当前的代码如下:
componentDidMount() {
BackHandler.addEventListener('hardwareBackPress', this.backHandler);
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this.backHandler);
}
backHandler = () => {
if (this.state.canGoBack) {
this.webviewRef.current.goBack();
// I thought this might force the back press to be
// ignored by react-native-navigation, but no dice.
return false;
} else {
// WebView can't go back so pop view like normal
Navigation.pop(this.props.componentId);
}
}
如果 WebView 当前无法返回,我希望这只会从堆栈中弹出视图,否则只会让 WebView 返回。
实际发生的是两个事件都发生了。即 WebView 返回,但视图也从堆栈中弹出。