在react-navigation中,routeName和key之间的区别是什么?

Mon*_*key 8 react-native ex-navigation react-navigation

有一点令人困惑的是路由名称和密钥之间的区别以及为什么要使用一个与另一个相比.并且,如何处理重复的路由名称.

此文档说您用于routeName导航到屏幕,这key是"用于对路径进行排序的唯一标识符".那是什么意思?

看起来路由名称不必是唯一的,如我的例子中所示,因为外部选项卡和内部堆栈具有相同的路由名称.当您使用导航功能时 - 您传递路线名称,对吗?如果是这样,它如何区分嵌套导航器中的重复路径名称以及何时使用该键?

        export TabsNavigator = TabNavigator({
          Home: {
            screen:StackNavigator({
              Home: { screen: HomeScreen },
            }),
          },
          Profile: {
            screen: StackNavigator({
              Profile: { ProfileScreen },
            }),
          },
        });
Run Code Online (Sandbox Code Playgroud)

文档中有一个设置密钥的示例,但我无法理解它正在尝试执行的操作的上下文,或者为什么要在实际用例中执行此操作.

import { NavigationActions } from 'react-navigation'

const setParamsAction = NavigationActions.setParams({
  params: {}, // these are the new params that will be merged into the existing route params
  // The key of the route that should get the new params
  key: 'screen-123',
})
this.props.navigation.dispatch(setParamsAction)
Run Code Online (Sandbox Code Playgroud)

小智 2

您可以使用导航器中指定的屏幕名称(例如StackNavigator)来打开/显示屏幕。每个屏幕都有一个唯一的标识符,这就是密钥。例如,如果您打开两个相同类型的屏幕,它们将具有相同的路线名称,但具有不同的键。

您可以使用this.props.navigation.dispatch(NavigationActions.setParams(params: {val: 'val'}, key: 'home-1'));键更新屏幕的导航状态'home-1'。例如,如果您在主屏幕顶部有 StackNavigator 和设置屏幕,您可以this.props.navigation.state.params从设置屏幕更新主屏幕的导航状态 ( )。

  • 如果我不使用 NavigationActions,我应该在哪里指定键?它在 StackNavigator 路由定义中吗? (8认同)
  • 在哪里配置唯一密钥?是按屏幕还是按导航器?文档上的按键非常糟糕...... (7认同)