为什么Navigation.goBack()无法正常工作?

时间:2019-07-27 13:43:03

标签: react-native react-navigation react-navigation-stack react-navigation-drawer

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

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

这是怎么回事。

请帮助我,谢谢。

2 个答案:

答案 0 :(得分:2)

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

之所以发生这种情况,是因为您使用的是DrawerNavigation,当您在其中浏览时不会创建屏幕历史记录。

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

DrawerNavigation => StackNavigator => Screen A, B, C

答案 1 :(得分:0)

上面的答案是,抽屉式导航器不在堆栈中,因此您无法确定旅程的路径。

key的{​​{1}}属性是动态创建的字符串,由goBack()在每次导航到新路线时创建。

这些堆栈密钥存储在react-navigation

  

注意:如果您的目标是返回任何地方,请使用this.props.navigation.state   而不指定结束目标。

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

示例

.goBack(null)