【问题标题】:Clear stack being navigated to React-Navigation清除堆栈被导航到 React-Navigation
【发布时间】:2018-01-10 20:01:54
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 不,不可能这样。请显示更多您的代码。
  • @BrightLee 我在 Expo 示例中添加了代码
  • 我查看了您的代码,Screen3 中有错字。它说是屏幕 4。
  • 我没有看到那个错误。我看到 Drawer Item 2 Screen 1 在文本中被错误地标记为 Screen 2,但这些都与我在上面的帖子中提到的问题无关
  • 啊....现在我明白了。这是什么鬼?我从来不知道会发生这种情况。

标签: react-native react-navigation


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多