Скажем, что я прошел через 4 экрана в моем приложении StackNavigator и теперь хочу вернуться к первому экрану. Кажется, есть три разных способа сделать это, и они перемещаются туда, где я хочу, но каждый из них имеет анимацию, которая проходит через каждый предыдущий экран.
Есть ли чистый способ перехода от 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);
}