【发布时间】:2020-07-10 11:12:05
【问题描述】:
所以我有以下导航结构:
NavigationContainer
--Tab.Navigator
----Tab.Screen (Home)
------Stack.Navigator
--------Stack.Screen (Overview)
--------Stack.Screen (Goals)
--------Stack.Screen (Economy)
----Tab.Screen (Stats)
------Stack.Navigator
--------Stack.Screen (Overview)
--------Stack.Screen (Economy Page)
--------Stack.Screen (Consumption Page)
----Tab.Screen (Challenges)
----Tab.Screen (Data)
现在问题是我希望所有堆栈导航器都重置为更改选项卡时的默认概览页面。这意味着,例如,如果您在主屏幕概览中,输入目标堆栈屏幕,将选项卡更改为统计信息,然后返回主选项卡,您将返回概览,但现在它仍会在目标屏幕上。
我曾尝试使用来自反应导航的 CommonActions 方法,如下所示:
navigation.addListener('blur', () => {
console.log('Home screen changed');
navigation.dispatch(
CommonActions.reset({
index: 1,
routes: [
{ name: HomeScreens.Start },
],
}),
);
});
但问题是导航元素引用了父导航器。这意味着如果您在每个 Stack Navigator 中也会发生重置,这是我不想要的。
现在我的主屏幕是这样的:
export function HomeScreen({ navigation }:any) {
return (
<NavigationContainer independent = {true} >
<Stack.Navigator initialRouteName={HomeScreens.Start} headerMode = "none">
<Stack.Screen name = {HomeScreens.Start} component={StartPage} />
<Stack.Screen name= {HomeScreens.Economy} component={EconomyPage} />
<Stack.Screen name= {HomeScreens.Goal} component={GoalPageFunc} />
</Stack.Navigator>
</NavigationContainer>
);
}
是否可以在更改选项卡时在此处执行某些操作以重置堆栈导航器,但在堆栈导航器中导航时则不能?
【问题讨论】:
标签: javascript node.js react-native react-navigation