1

我正在使用以下方式创建导航系统

StackNavigator -> DrawerNavigator ->(屏幕 A、屏幕 B、屏幕 C)

屏幕 A 是初始路线

屏幕 A 到屏幕 B 使用

this.props.navigation.navigate("Screen B")  //Working Fine

屏幕 B 到屏幕 C 使用

this.props.navigation.navigate("Screen C")  //Working Fine

在屏幕 C

this.props.navigation.goBack() //Not Working

this.props.navigation.goBack(null) //It's going to Screen A instead of Screen B

这里有什么问题。

请帮帮我谢谢。

4

2 回答 2

4

由于您没有显示抽屉的导航结构,我不知道 3 个屏幕是如何放入其中的。我假设它们是 3 个不同的抽屉屏幕

发生这种情况是因为您使用的是 DrawerNavigation,当您在它周围导航时,它不会创建屏幕历史记录。

要解决此问题,您必须将导航结构更改为:

DrawerNavigation => StackNavigator => Screen A, B, C
于 2019-07-27T13:49:04.340 回答
1

正如上面的答案是,抽屉导航器不在堆栈中,因此您无法分辨旅程的路径。

for的key属性goBack()是一个动态创建的字符串,由react-navigation导航到新路由时创建。

这些堆栈键存储在this.props.navigation.state

注意:.goBack(null)如果您的目标是返回任何地方而不指定关闭目标,请使用此选项。

像这个例子一样,您可以添加到堆栈中。

例子

const Drawers = createDrawerNavigator(
  {
    A: {
      screen: HomeScreen
    },
   ...
  },
  {
    initialRouteName: "A"
  }
);

const RootStack = createStackNavigator(
  {
    Drawers: {
      screen: Drawers
    },
    otherStack: {
      screen: otherStack
    },
    ....

于 2019-07-27T15:48:43.837 回答