React native 两条路由在“时”实例化;“注册”;触发

React native 两条路由在“时”实例化;“注册”;触发,react-native,redux,react-redux,react-navigation,stack-navigator,React Native,Redux,React Redux,React Navigation,Stack Navigator,我有一个带有注册和登录流的应用程序。当与Redux一起使用时,嵌套堆栈导航器有点问题 反应导航结构 RootNavigator(堆栈导航器) 注册(堆栈导航器) 登录(堆栈导航器) 应用程序设置 反应:16.0.0-alpha.6 反应本机:0.44.2 反应导航:^1.0.0-beta.11 反应重复次数:^5.0.6 我的问题是,当从“登陆”触发“注册”(或“登录”)时,将为嵌套(内部)堆栈导航器实例化两个初始屏幕。请看下面的屏幕抓图 这是着陆状态(正确) 但当按下“寄存器”时

我有一个带有注册和登录流的应用程序。当与Redux一起使用时,嵌套堆栈导航器有点问题

反应导航结构

  • RootNavigator(堆栈导航器)
    • 注册(堆栈导航器)
    • 登录(堆栈导航器)
应用程序设置

  • 反应:16.0.0-alpha.6
  • 反应本机:0.44.2
  • 反应导航:^1.0.0-beta.11
  • 反应重复次数:^5.0.6
我的问题是,当从“登陆”触发“注册”(或“登录”)时,将为嵌套(内部)堆栈导航器实例化两个初始屏幕。请看下面的屏幕抓图

这是着陆状态(正确)

但当按下“寄存器”时,就会发生这种情况。

我最终得到了两条“注册”路线(routeName称为“PersonalRego”)。如屏幕截图所示,'Step1'被复制,因为我希望routes数组中只有一个'Step1'实例。但这两个“步骤1”的键是不同的。一个以“Init-”开头,另一个则不是

因此,返回导航(按顶部的“关闭”按钮)不会按预期取消注册。它再次显示了注册的“步骤1”

除了这个问题,react导航的一切对我来说都很好。在ReactNative+ReactNavigation+Redux应用程序中配置嵌套StackNavigator时,我需要做什么特别的事情

我对此有点困惑。欢迎提出任何意见

提示:StackNavigator代码(仅一级深嵌套StackNavigator)


请参考下面的链接,由我的朋友完美解答和解释->

为了子孙后代回答我自己的问题

当按下Register时,我将导航到“Step1”而不是“PersonalRego”PersonalRego'已将'Step1'作为初始路由,因此如果导航到'Step1',它将推送另一个实例


因此,按下注册按钮调用“PersonalRego”路线可以解决这个问题。

您能否提供导航器结构的代码以及如何使用导航器进行导航?@AlexanderVitanov:我已经用StackNav代码结构更新了这个问题。但问题与结构无关。我没有呼叫正确的路线名称。请参考我自己对这个问题的回答以了解更多信息。谢谢,链接上写着“访问被拒绝”。但我设法解决了我的问题。我会在回答中解释。
// LandingNav.js

const routes = {
    Landing: { screen: Landing },
    PersonalRego: { screen: PersonalRego },
    Auth: { screen: Auth },
};

const config = {
    headerMode: 'none',
    initialRoute: 'Landing,
};
const Root = StackNavigator(routes, config);   
// PersonalRegoNav.js
const routes = {
    Step1: { screen: Step1 },
    Step2: { screen: Step2 },
    Step3: { screen: Step3 },
};

const config = {
    headerMode: 'none,
    initialRoute: 'Step1',
};

const Root = StackNavigator(routes, config);
// AuthNav.js

const routes = {
    Login: { screen: LoginContainer },
    ForgotUsername: { screen: ForgotUsername },
    ForgotPassword: { screen: ForgotPassword },
};

const config = {
    headerMode: 'none',
    initialRoute: 'Login',
};
const Root = StackNavigator(routes, config);