我有一个带有注册和登录流程的应用程序。当与 Redux 一起使用时,我遇到了嵌套堆栈导航器的问题。
React-导航结构
- RootNavigator(堆栈导航器)
- 注册(堆栈导航器)
- 登录(堆栈导航器)
应用程序设置
- 反应:16.0.0-alpha.6,
- 反应原生:0.44.2,
- 反应导航:^1.0.0-beta.11,
- 反应还原:^5.0.6,
我的问题是,当从“登陆”ReactNavigation 触发“注册”(或“登录”)时,为嵌套(内部)堆栈导航器实例化两个初始屏幕。请参阅下面的屏幕截图。
我最终得到了两条“注册”路线(路线名称称为“PersonalRego”)。如屏幕截图所示,'Step1' 是重复的,因为我期望在 routes 数组中只有一个 'Step1' 实例。但是这两个“Step1”的键是不同的。一个以“Init-”开头,另一个没有。
因此,向后导航(按顶部的“关闭”按钮)不会按预期取消注册。而是再次显示注册的“Step1”。
除了这个问题,反应导航的一切对我来说似乎都很好。在 ReactNative + ReactNavigation + Redux 应用程序中配置嵌套的 StackNavigators 时,我需要做些什么特别的事情吗?
我对此有点困惑。欢迎任何意见。
Ps : StackNavigator 代码(只有一层深嵌套的 StackNavigator)
// 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);