我在stacknavigator中有嵌套在DrawerNavigator中的屏幕。我想在单击时重新启动DrawerNavigator中的屏幕。
系统流程架构:
App.js ::
StackNavigator:
ScreensSetup.js包含以下内容:
a。将屏幕堆叠为:
const FirstStackNavigator = createStackNavigator({
First: {
screen: Dashboard,
},
});
const SecondStackNavigator = createStackNavigator({
Second: {
screen: Workorders,
},
});
b。 DrawerNavigator嵌套在上面的堆叠屏幕中,如下所示:
const DrawerNavigator = createDrawerNavigator({
Dashboard: {
screen: FirstStackNavigator,
},
Workorders: {
screen: SecondStackNavigator,
},
},
{
contentComponent: DrawerContent ,
initialRouteName: 'Dashboard',
});
我可以通过以下方式从“ ScreensSetup”导航到“工作订单”:
this.props.navigation.navigate('Workorders');
这很好用。
但是我需要重新启动屏幕。因此,我使用了: 重置ScreensSetup:
const navigateAction = StackActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: "ScreensSetup" })],
});
this.props.navigation.dispatch(navigateAction);
这很好用。
用于重置工作单:
const navigateAction = StackActions.reset({
index: 0,
actions: [NavigationActions.navigate({ routeName: "Workorders" })],
});
this.props.navigation.dispatch(navigateAction);
这给了我错误:
Error: Error: There is no route defined for key Workorders.
│ Must be one of: 'Login','ScreensSetup'
在抽屉式导航仪上单击菜单时,我只是想重置屏幕。我完全搞砸了这种导航。任何帮助,将不胜感激。谢谢。
答案 0 :(得分:0)
如果您想关闭所有屏幕并返回到开始,请使用popToTop
'功能。
popToTop
操作会将您带回到堆栈中的第一个屏幕,关闭所有其他屏幕。它在功能上与StackActions.pop({n: currentIndex})
相同。
用法
import { StackActions } from 'react-navigation';
this.props.navigation.dispatch(StackActions.popToTop());