React-native:回到堆栈中的特定屏幕
这是根导航器
export const AppNavigator = StackNavigator({ Splash: { screen: Splash },Dashboard: { screen: DashboardDrawer } }); const DashboardDrawer = DrawerNavigator({ DashboardScreen: { screen: StackNavigator({ A: { screen: A },B: { screen: B },C: { screen: C },D: { screen: D },} },{ contentComponent: DashboardDrawerComponent,drawerWidth: 280 }); 我有4个屏幕 – A,B,C,D在我的堆栈中. 以上文件.说明从屏幕D到屏幕A(弹出D,C和B)你需要提供一个goBack FROM的密钥,在我的情况下是B,就像这样 navigation.goBack(SCREEN_KEY_B) 那么,我的问题是我应该从哪里获得特定屏幕的密钥? 解决方法
这很棘手!
我提到了这部分反应导航文档,并且已经实现了上述目标! 这是怎么回事 1.在问题中改变了我的DrawerNavigator,稍微改编(以适应下面的stacknavigator) const DrawerStackNavigator = new StackNavigator({ A: { screen: A },} }); const DashboardDrawer = DrawerNavigator({ DashboardScreen: DrawerStackNavigator,},{ contentComponent: DashboardDrawerComponent,drawerWidth: 280 }); 2.在屏幕D中调度动作 const {navigation} = this.props; navigation.dispatch({ routeName: 'A',type: 'GoToRoute',}); 3.在我的堆栈导航器上收听此操作 const defaultGetStateForAction = DrawerStackNavigator.router.getStateForAction; DrawerStackNavigator.router.getStateForAction = (action,state) => { if (state && action.type === 'GoToRoute') { let index = state.routes.findIndex((item) => { return item.routeName === action.routeName }); const routes = state.routes.slice(0,index+1); return { routes,index }; } return defaultGetStateForAction(action,state); }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |