重置根导航

时间:2019-07-02 22:21:15

标签: react-native react-navigation

我有以下导航树状结构: enter image description here

我想重置我的SwitchNavigator(根),这将重置所有嵌套的导航器,然后转到SignInScreen。

我浪费了很多时间,尝试了很多事情。似乎以前,我们可以使用

NavigationActions.reset({
    key: null,
    index: 0,
    actions: [NavigationActions.navigate({ routeName: 'SignIn' })],
  })

但是在实际版本的反应导航中,reset不能使用NavigationActions,而StackActions只能使用StackNavigator。我的意思是,我想重置我的根导航器,而不仅仅是重置嵌套的react-navigation

null的问题中,我看到如果密钥为this.props.navigation.dispatch(StackActions.reset({ key: null, index: 0, actions: [ NavigationActions.navigate({ routeName: 'SignIn', }), ], })); ,则根导航器将重置。所以我尝试了这样:

ProfileScreen

我不知道它是否有效,因为我无法从我的SignInScreen(要注销的屏幕)转到{{1}},因此出现此错误:

错误:没有为密钥登录定义任何路由。 必须是以下之一:'ProfileScreen'

所以,我的问题是:

如何卸载我的应用程序的所有屏幕(注销时)?

1 个答案:

答案 0 :(得分:1)

摘自createSwitchNavigator的文档:

  

默认情况下,它不处理后退操作,并且在您离开时将路由重置为其默认状态

因此,您真正需要做的就是导航到SignIn屏幕。

this.props.navigation.navigate('SignIn')

但是,由于它说没有为该密钥定义路由,因此您应该确保这是在AuthStack.js中定义的正确路由名称。