我有一个开关导航器:
export default createSwitchNavigator({
AuthLoading: AuthLoadingScreen,
EditProfile: EditProfileScreen,
Login: LoginScreen,
Register: RegisterScreen,
ForgotPassword: ForgotPasswordScreen,
Main: MainTabNavigator,
MainLoading: MainLoadingScreen,
TripReport: TripReportScreen,
},
{
initialRouteName: 'AuthLoading',
});
当我在'Main',一个标签导航器上,我有一个按钮,导航我到'TripReport'屏幕:
onPress={() => navigation.navigate('TripReport', {tripReport: tripReport})}
在TripReportScreen上,我为Android后退按钮添加了一个事件监听器,以返回'Main',但也返回到特定的Tab:
componentDidMount() {
// Add event listener for the Android back button.
BackHandler.addEventListener("hardwareBackPress", () => {
this.props.navigation.goBack(null);
return true
})
}
goBack功能无效。我得到它的唯一方法是
navigation.navigate('Main)
但这会重新加载'Main'而不是回到屏幕所具有的状态。
是的,这是正确的行为。如果我不得不引用reactnavigation
(可选)提供一个键,指定要返回的路径。默认情况下,goBack将关闭从中调用它的路由。如果目标是返回任何地方,而不指定要关闭的内容,请调用.goBack(null);请注意,当子导航器在堆栈中只有一个项目时,如果嵌套的StackNavigators返回到父导航器,则null参数非常有用。
这只适用于StackNavigators
。
希望这可以帮助。
那是因为当你在qazxsw poi上调用qazxsw poi时,qazxsw poi实际上是指你的this.props.navigation.goBack
。这就是为什么你的背部动作不起作用。
你需要达到正确的Main
才能向你的this.props.navigation
发送MainTabNavigator
动作,请查看SwitchNavigator
的几种方法。
或者,你也可以创建一个你的back
的引用,在这里结帐这个答案SwitchNavigator