反应导航中 Stack 和 Switch Navigator 之间的嵌套导航器之间的导航

Posted

技术标签:

【中文标题】反应导航中 Stack 和 Switch Navigator 之间的嵌套导航器之间的导航【英文标题】:Navigation between nested navigator between Stack and Swtich Navigator in react navigation 【发布时间】:2019-09-15 06:53:49 【问题描述】:

您好,我的导航具有 RootNavigator,如下所示;

const App = createSwitchNavigator(
  
    Auth: AuthNavigator,
    App: HomeNavigator,
    Seller: SellerNavigator
  ,
  
    initialRouteName: "Auth",
    headerMode: "none"
  
);

场景

Auth 包含登录、注册等。 App 包含 home 等。当用户登录时,他现在是 App Navigator

当用户按下注销时我想要什么,我想正确移动用户 从 App navigator 到 Auth navigator

我已经尝试过StackNavigation 和NavigationActions

代码

logout = () => 
        const resetAction = StackActions.reset(
            index: 0,
            key: null,
            actions: [NavigationActions.navigate(routeName: 'Auth')]
        );
        this.props.navigation.dispatch(resetAction);
;

错误

请指导我如何在反应导航中正确操作?

谢谢

【问题讨论】:

要使用导航操作,您必须在导出之前将组件包装在导航标签中! 怎么做? 【参考方案1】:

您不能在那里使用堆栈操作,因为Auth 不是堆栈导航器的一部分。

您可以做的只是来自注销组件的navigation.navigate('Auth')。这将使用户进入Auth 导航器,并且由于AuthApp 是开关导航器的一部分,他将无法将go back 转到App 堆栈,这是您想要的行为,在此情况下,与使用StackActions.reset相同。

【讨论】:

以上是关于反应导航中 Stack 和 Switch Navigator 之间的嵌套导航器之间的导航的主要内容,如果未能解决你的问题,请参考以下文章

在特定屏幕上使用反应导航修改后退按钮

在反应导航 5.x 中禁用导航回登录/注册屏幕

使用选项卡堆栈时反应导航深度链接不起作用

反应导航默认背景颜色

反应导航5从堆栈导航器中隐藏标签栏

摆脱顶部标签的边框(反应导航)