从嵌套子屏幕访问父堆栈导航器的导航对象
2020-12-02
3292
我在我的 react-native 项目中使用 React Navigation v5。
我有一个嵌套的堆栈导航器。
父堆栈导航器
MyParentFlow
具有一个托管另一个堆栈导航器的屏幕组件:
const MyParentFlow = ({route, navigation}) => {
const MyStack = createStackNavigator();
return (
<MyStack.Navigator
initialRouteName={...}
...>
{/*HERE is the nested children stack navigator*/}
<MyStack.Screen
name={FLOWS.MyChildrenFlow}
component={MyChildrenFlow}
/>
<MyStack.Screen .../>
...
</MyStack.Navigator>
)
}
我的嵌套堆栈导航器
MyChildrenFlow
:
const MyChildrenFlow = ({route, navigation}) => {
const MyStack = createStackNavigator();
return (
<MyStack.Navigator
initialRouteName={...}
...>
{/*HERE is a child screen in the nested navigator*/}
<MyStack.Screen
name="MyChildScreen"
component={MyChildScreen}
/>
<MyStack.Screen .../>
...
</MyStack.Navigator>
)
}
在嵌套堆栈导航器托管的子屏幕中:
const MyChildScreen =({navigation})=> {
/* I need to set options for the header of the parent's navigation */
navigation.setOptions({
headerRight: () => (
...
/>
),
});
}
在嵌套堆栈导航器托管的子屏幕中,我需要通过
navigation
为
parent
导航器设置标题。我的上述代码不起作用,因为
navigation
对象是嵌套堆栈导航器的,而不是父级的。
我的问题是如何在嵌套子屏幕中访问父级导航器并为其设置导航选项?
2个回答
尝试一下
navigation.getParent().dispatch(
CommonActions.navigate({
name: 'screenName',
params: {},
}
))
Kuti Gbolahan
2022-03-09
您可以使用
dangerouslyGetParent()
访问它
const parent = navigation.dangerouslyGetParent();
https://reactnavigation.org/docs/navigation-prop/#dangerouslygetparent
satya164
2020-12-02