清除堆栈正在导航到反应导航



我的react-native应用程序由一个包含多个StackNavigator的DrawerNavigator组成。我的结构的简化示例如下所示

- Drawer
- Stack 1
- Screen 1
- Screen 2
- Stack 2
- Screen 1
- Screen 2

我的问题如下: 我在堆栈 1 的屏幕 1 上。我使用抽屉导航到堆栈 1 的屏幕 2。从堆栈 2 的屏幕 1,我按下按钮导航到堆栈 2 的屏幕 2。然后,我使用抽屉导航回堆栈 1。我再次使用抽屉返回堆栈 2。我现在在堆栈 1 的屏幕 2 上,但标题中有一个后退按钮,看来我当前的屏幕刚刚放在旧堆栈的顶部。按下它会将我导航到堆栈 2 的屏幕 2,再次按下它会将我导航到堆栈 2 的屏幕 1。

当导航回抽屉中的堆栈时,我希望它会用新的堆栈将我返回到堆栈中的第一项 - 也就是说,没有后退按钮。

这种行为是预期的吗?如果是这样,当我从抽屉导航到堆栈时,我能做些什么来"清除"堆栈?

这是一个世博会示例,其中包含最少的代码来重现我的结构和问题:https://snack.expo.io/rk2HV-HNf

在 react-navigation 中,如果你想返回,而不是创建一个新屏幕,你需要使用this.props.navigation.goBack().如果您使用navigate方法,它会创建一个新屏幕,因此会返回按钮。

但是,还有另一种方法。在您的情况下,您不需要这样做,但是您也可以使用NavigationActions从头开始定义堆栈并调度它以重置导航堆栈。

最新更新