【问题标题】:React Native Switch Navigator: goBack() not workingReact Native Switch Navigator:goBack()不起作用
【发布时间】:2019-03-04 10:51:49
【问题描述】:

我有一个切换导航器:

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 后退按钮添加了一个事件监听器以返回到“主”,但也返回到特定的选项卡:

  componentDidMount() {
    // Add event listener for the Android back button.
    BackHandler.addEventListener("hardwareBackPress", () => {
      this.props.navigation.goBack(null);
      return true
    })
  } 

goBack 功能不起作用。我让它工作的唯一方法是

navigation.navigate('Main)

但这会重新加载“主”而不是返回到屏幕的状态。

【问题讨论】:

    标签: react-native react-native-navigation


    【解决方案1】:

    是的,这是正确的行为。 如果我必须引用reactnavigation

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

    这仅适用于StackNavigators。

    希望这会有所帮助。

    【讨论】:

    【解决方案2】:

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

    您需要到达正确的SwitchNavigator 才能将back 操作发送到您的SwitchNavigator,查看suggested on this thread 的几种方法。

    或者,您也可以创建对您的 switchNavigator 的引用,在此处查看此答案 https://stackoverflow.com/a/54878858/2963461

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-19
      • 2021-03-08
      • 2018-06-20
      • 2017-12-29
      • 2017-10-14
      • 2021-11-05
      相关资源
      最近更新 更多