假设我已经在 StackNavigator 应用程序中浏览了 4 个屏幕,现在我想返回第一个屏幕。似乎有三种不同的方法可以做到这一点,并且它们确实导航到我想做的地方,但是每种方法都有一个循环显示每个先前屏幕的动画。
有没有一种干净的方法可以从 SCREEN_D
导航到 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);
}
最佳答案
react-navigation有popToTop
,我们可以像blow一样使用它
this.props.navigation.popToTop()
关于javascript - React Navigation : Navigate Back To Root using NavigationActions. 重置、goBack 和 getStateForAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43946437/