Я использую React-Native-Navigation из Wix ( версия 2 ) для настройки навигации в моем приложении React Native. Я использую макет sideMenu
с центральной секцией, являющейся стеком. Когда пользователь выбирает один из элементов бокового меню, выбранный вид помещается в этот центральный стек. Если пользователь нажимает кнопку «Назад» на Android, то представление вытолкнуло из стека, но я не всегда хочу, чтобы это произошло, в основном, если выбранное ими представление является WebView
.
Если представление является WebView
, я хочу вручную обработать пользователя, нажимая аппаратную кнопку возврата. Если WebView
может "goBack
", то представление вернется назад, но если это невозможно, то представление будет извлечено из стека (как обычно).
Я попытался переопределить нажатие кнопки «назад», используя класс BackHandler
из 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 возвращается, но представление также извлекается из стека.