Javascript 如何在模糊上重置堆栈导航器?(反应本机,反应导航)
因此,我有以下导航结构:Javascript 如何在模糊上重置堆栈导航器?(反应本机,反应导航),javascript,node.js,react-native,react-navigation,Javascript,Node.js,React Native,React Navigation,因此,我有以下导航结构: NavigationContainer --Tab.Navigator ----Tab.Screen (Home) ------Stack.Navigator --------Stack.Screen (Overview) --------Stack.Screen (Goals) --------Stack.Screen (Economy) ----Tab.Screen (Stats) ------Stack.Navigator --------Stack.Screen
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)
现在的问题是,当选项卡更改时,我希望所有堆栈导航器都重置为默认的概览页面。这意味着,例如,如果您在主屏幕概览上,输入goals stackscreen,将选项卡更改为stats,然后返回home选项卡,您将返回概览,但现在它仍将在goals屏幕上
我尝试过使用react navigation中的CommonActions方法,如下所示:
navigation.addListener('blur', () => {
console.log('Home screen changed');
navigation.dispatch(
CommonActions.reset({
index: 1,
routes: [
{ name: HomeScreens.Start },
],
}),
);
});
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>
);
}
但问题是导航元素引用父导航器。这意味着,如果在每个堆栈导航器中执行重置,也会发生我不想要的情况
现在,我的主屏幕如下所示:
navigation.addListener('blur', () => {
console.log('Home screen changed');
navigation.dispatch(
CommonActions.reset({
index: 1,
routes: [
{ name: HomeScreens.Start },
],
}),
);
});
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>
);
}
导出功能主屏幕({navigation}:any){
返回(
);
}
是否可以在更改选项卡时在此处执行某些操作来重置stacknavigator,但在stacknavigator中导航时不可以