React Navigation:如何在 Stack Navigator 中伪造历史记录?

React Navigation: How to fake a history in Stack Navigator?

我使用 https://reactnavigation.org/ 并且我的应用程序有一个由多个屏幕组成的注册过程:

如果用户在LastNameView中关闭应用,稍后再次打开,应用会向后端发送请求以获取当前用户数据。根据此数据,用户通过 initialRouteName 属性:

导航到右侧屏幕
<MainStack.Navigator
  initialRouteName="LastNameView"
>...

我在每个屏幕上都有一个后退按钮 navigation.goBack(),如果用户只是再次打开应用程序并且我将他引导到正确的视图而不将其他屏幕推到它,这显然不起作用。

我能想到的一种方法是删除 navigation.goBack() 功能并将其替换为 navigation.navigate("nameOfPreviousView")。然而,这有一个缺点,即原生的“后退”功能,例如Android 不行。

我该如何处理这样的情况?我可以用我的 initialRouteName 方法以某种方式创建虚假历史记录吗?

是的,您可以在不导航的情况下创建以前的路线历史记录。 在 NavigationContainer 中初始化 initialState like

let initialState = initialRoute = {
  index: 1, // to load the second screen which is LastNameView
  routes: [
    {
      name: 'FirstNameView',
    },
    {
      name: 'LastNameView',
    },
  ],
};

<NavigationContainer initialState={initialState}> {/* ... */} </NavigationContainer> 要在此处探索有关 initialState 检查说明的更多信息 https://reactnavigation.org/docs/navigation-container/#initialstate