React native 在什么';routeName和key的区别是什么?

React native 在什么';routeName和key的区别是什么?,react-native,react-navigation,ex-navigation,React Native,React Navigation,Ex Navigation,有一点让人困惑的是路由名称和密钥之间的区别,以及为什么要使用其中一个和另一个。以及如何处理重复的路由名称 使用routeName导航到屏幕,并且键是“用于对路由进行排序的唯一标识符”。这是什么意思 似乎路由名称不必像我的示例中所示那样是唯一的,因为外部选项卡和内部堆栈都具有相同的路由名称。使用导航功能时-传递路线名称,对吗?如果是这样,如何区分嵌套导航器中的重复路由名称,以及何时使用密钥 export TabsNavigator = TabNavigator({

有一点让人困惑的是路由名称和密钥之间的区别,以及为什么要使用其中一个和另一个。以及如何处理重复的路由名称

使用
routeName
导航到屏幕,并且
键是“用于对路由进行排序的唯一标识符”。这是什么意思

似乎路由名称不必像我的示例中所示那样是唯一的,因为外部选项卡和内部堆栈都具有相同的路由名称。使用导航功能时-传递路线名称,对吗?如果是这样,如何区分嵌套导航器中的重复路由名称,以及何时使用密钥

        export TabsNavigator = TabNavigator({
          Home: {
            screen:StackNavigator({
              Home: { screen: HomeScreen },
            }),
          },
          Profile: {
            screen: StackNavigator({
              Profile: { ProfileScreen },
            }),
          },
        });
有一个设置键的例子,但我无法理解它试图做什么的上下文,或者在实际用例中为什么要这样做

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)

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


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

如果不使用导航操作,我在哪里指定键?是否在StackNavigator路由定义中?在何处配置唯一密钥?是每个屏幕还是每个导航器?医生的钥匙很差。。。