在反应导航中,routeName 和 key 有什么区别?
In react-navigation what's the difference between routeName and key?
有一件事有点让人困惑,那就是路由名称和密钥之间的区别,以及为什么要使用其中一个。以及如何处理重复的路由名称。
This documentation says 您使用 routeName
导航到屏幕,而 key
是 "a unique identifier used to sort routes." 什么意思?
路由名称似乎不必像我的示例中所示那样唯一,因为外部选项卡和内部堆栈都具有相同的路由名称。当您使用导航功能时 - 您传递路线名称,对吗?如果是这样,它如何区分嵌套导航器中的重复路由名称以及何时使用该键?
export TabsNavigator = TabNavigator({
Home: {
screen:StackNavigator({
Home: { screen: HomeScreen },
}),
},
Profile: {
screen: StackNavigator({
Profile: { ProfileScreen },
}),
},
});
The documentation 有一个设置密钥的示例,但我不明白它试图做什么的上下文,或者为什么你会在实际用例中这样做。
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(params: {val: 'val'}, key: 'home-1'));
您可以使用键 'home-1'
更新屏幕的导航状态。例如。如果您在主屏幕顶部有一个 StackNavigator 和一个设置屏幕,您可以从设置屏幕更新主屏幕的导航状态 (this.props.navigation.state.params
)。
有一件事有点让人困惑,那就是路由名称和密钥之间的区别,以及为什么要使用其中一个。以及如何处理重复的路由名称。
This documentation says 您使用 routeName
导航到屏幕,而 key
是 "a unique identifier used to sort routes." 什么意思?
路由名称似乎不必像我的示例中所示那样唯一,因为外部选项卡和内部堆栈都具有相同的路由名称。当您使用导航功能时 - 您传递路线名称,对吗?如果是这样,它如何区分嵌套导航器中的重复路由名称以及何时使用该键?
export TabsNavigator = TabNavigator({
Home: {
screen:StackNavigator({
Home: { screen: HomeScreen },
}),
},
Profile: {
screen: StackNavigator({
Profile: { ProfileScreen },
}),
},
});
The documentation 有一个设置密钥的示例,但我不明白它试图做什么的上下文,或者为什么你会在实际用例中这样做。
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(params: {val: 'val'}, key: 'home-1'));
您可以使用键 'home-1'
更新屏幕的导航状态。例如。如果您在主屏幕顶部有一个 StackNavigator 和一个设置屏幕,您可以从设置屏幕更新主屏幕的导航状态 (this.props.navigation.state.params
)。