React Navigation 理解导航器嵌套

React Navigation understanding navigator nestings

我已经使用react-navigation快半年了,但我仍然不明白它的嵌套部分。 navigation prop如何继承,如何通信等。

我从 redux 示例应用程序创建了一个关于零食的演示。

Demo

我想了解这些:

  1. 如果我导航到 child 导航器,导航道具会发生什么?

  2. 如何从 child 导航器屏幕导航到 parents 屏幕或 parents 其他 child 的屏幕

  3. 如何从状态中删除 child 导航器?

最简单的例子: 在登录事件中,我使用 Main StackNavigator 重置了导航器。 问题是,我必须手动重建整个 Main 状态。 如果我能以某种方式删除 Auth StackNavigator 并保留 Main Stack,那会容易得多。

  1. 是否可以使用 child 导航器导航操作触发 redux 事件?

如文档所述,我用 redux 组件包装了主导航 (StackNavigator) 组件。在我导航到 child 组件之前,它工作正常。导航道具 niavigate 方法停止调度 redux 操作。

  1. 这个,我无法在演示中重现

我在 StackNavigator 中有一个组件和一个 DrawerNavigator。 如果我从组件导航到 DrawerNavigator(那里只有 1 个屏幕),我无法返回到该组件:

this.props.navigation.goBack()

奇怪的是它在屏幕组件内部是唯一不可能的。从屏幕的 header 组件开始工作。

  1. 一直可以在props.navigation访问。

  2. reset 需要操作才能导航到 parent/child 导航器。
    此外,由于 #1127 key: null 是必需的

  3. navigation.replace 是登录导航到主屏幕的另一个选项,如果屏幕在同一个导航器中,如果需要动画过渡,请使用 reset。或者查看#295

  4. 中的其他方法
  5. navigate只能在同一个导航器中导航到屏幕,其他方法参考答案3。

  6. 可能缺少组件navigation道具

Working Demo