React Native Switch Navigator:goBack()无效

问题描述 投票:0回答:2

我有一个开关导航器:

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'而不是回到屏幕所具有的状态。

react-native react-native-navigation
2个回答
1
投票

是的,这是正确的行为。如果我不得不引用reactnavigation

(可选)提供一个键,指定要返回的路径。默认情况下,goBack将关闭从中调用它的路由。如果目标是返回任何地方,而不指定要关闭的内容,请调用.goBack(null);请注意,当子导航器在堆栈中只有一个项目时,如果嵌套的StackNavigators返回到父导航器,则null参数非常有用。

这只适用于StackNavigators

希望这可以帮助。


0
投票

那是因为当你在qazxsw poi上调用qazxsw poi时,qazxsw poi实际上是指你的this.props.navigation.goBack。这就是为什么你的背部动作不起作用。

你需要达到正确的Main才能向你的this.props.navigation发送MainTabNavigator动作,请查看SwitchNavigator的几种方法。

或者,你也可以创建一个你的back的引用,在这里结帐这个答案SwitchNavigator

© www.soinside.com 2019 - 2024. All rights reserved.