После нескольких исследований я нашел другой способ достижения этого эффекта.
Используйте BackHandler
из react-native
, чтобы добавить слушателя для прослушивания физического триггера кнопки возврата, а затем сравните с react-native-router-flux
Actions.currentScene
, чтобы определить, что они должны делать на разных страницах, например:
import { Text, StyleSheet, Image, View, BackHandler, TouchableOpacity } from "react-native";
...
class ResultsView extends Component {
componentDidMount() {
BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick); //here
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this.handleBackButtonClick);
}
handleBackButtonClick() {
let cs = Actions.currentScene;
if (cs === "APage" || cs === "BPage" || cs === "CPage" || cs === "DPage") {
console.log("nono square don't pop!")
} else {
Actions.pop()
console.log("touch to pop here")
}
}
...
А затем установите для backAndroidHandler
в маршрутизаторе значение true:
<CustomRouter backAndroidHandler={true}>
...
И все работает нормально.