假设我已经在我的 StackNavigator 应用程序中浏览了 4 个屏幕,现在我想回到第一个屏幕。似乎有三种不同的方法可以做到这一点,它们确实导航到我想要做的地方,但是每种方法都有一个动画,可以循环遍历每个前一个屏幕。
有没有一种干净的方式从 导航SCREEN_D
到SCREEN_A
?
换句话说,我不希望看到SCREEN_C
和SCREEN_B
第二的前看到一个分裂SCREEN_A
向后导航时SCREEN_D
navigation.navigate(SCREEN_A);
...
navigation.navigate(SCREEN_B);
...
navigation.navigate(SCREEN_C);
...
navigation.navigate(SCREEN_D);
执行此操作的三种方法:
1.
return this.props.navigation
.dispatch(NavigationActions.reset(
{
index: 0,
actions: [NavigationActions.navigate({ routeName: 'SCREEN_A'})]
}));
2.
const {SCREEN_B_KEY} = this.props.navigation.state.params
this.props.navigation.goBack(SCREEN_B_KEY)
3.
const defaultGetStateForAction = Navigation.router.getStateForAction;
Navigation.router.getStateForAction = (action, state) =>{
if(action.type === "Navigation/BACK"){
const routes = [
{routeName: 'First'},
];
return {
...state,
routes,
index: 0,
};
}
return defaultGetStateForAction (action,state);
}