React native 反应导航:如何在堆栈导航器中伪造历史?

React native 反应导航:如何在堆栈导航器中伪造历史?,react-native,react-navigation,React Native,React Navigation,我使用并且我的应用程序有一个由几个屏幕组成的注册过程: 首先,用户必须输入他的名字(“FirstNameView”) 其次,用户必须输入他的姓氏(“LastNameView”) 如果用户在LastNameView中关闭应用程序,然后再次打开它,应用程序将向后端发送请求以获取当前用户数据。根据这些数据,用户将通过initialRouteName属性导航到右侧屏幕: <MainStack.Navigator initialRouteName="LastNameView&qu

我使用并且我的应用程序有一个由几个屏幕组成的注册过程:

  • 首先,用户必须输入他的名字(“FirstNameView”)
  • 其次,用户必须输入他的姓氏(“LastNameView”)
如果用户在
LastNameView
中关闭应用程序,然后再次打开它,应用程序将向后端发送请求以获取当前用户数据。根据这些数据,用户将通过
initialRouteName
属性导航到右侧屏幕:

<MainStack.Navigator
  initialRouteName="LastNameView"
>...
。。。
我在每个屏幕上都有一个后退按钮,它执行
导航.goBack()
,如果用户只是再次打开应用程序,并且我引导他进入正确的视图,而不按其他屏幕,则显然不起作用

我可以想到的一种方法是删除
navigation.goBack()
功能,并将其替换为
navigation.navigate(“nameofPreiousView”)
。然而,这有一个缺点,即Android的本机“后台”功能无法工作


我怎么处理这样的案子?我可以用我的
initialRouteName
方法创建一个假历史吗?

是的,您可以创建以前的路线历史,而无需导航到那里。 在NavigationContainer中初始化initialState,如

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

要了解有关initialState的更多信息,请在此处检查说明

是,您可以创建以前的路线历史记录,而无需在那里导航。 在NavigationContainer中初始化initialState,如

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

要了解有关initialState的更多信息,请在此处检查说明

非常感谢。我需要重构我的代码以使其工作,现在它不是很好,但它工作:-)。非常感谢。我需要重构我的代码以使其工作,现在它不是很好,但它工作:-)。