javascript - React Navigation : Navigate Back To Root using NavigationActions. 重置、goBack 和 getStateForAction

标签 javascript reactjs react-native react-navigation

假设我已经在 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/

相关文章:

javascript - react native | : <> </> 这是什么意思

javascript - Postman 测试 - 验证数组中对象中的字符串值

javascript - 如何设置生成 slider 的输入的默认值?

css - 如何在引导的 react/redux 应用程序中覆盖引导主题颜色?

javascript - this.setState 不会重新渲染 View ReactJS 和 Ruby on Rails

android - 如何在 `react-native`中检查Android设备是否支持手电筒?

javascript - 在 4 张图片下展开带有描述的 div

javascript - 即使在编译错误后,Typescript 编译器也会生成 javascript

reactjs - 升级后的 react - 懒惰 "ctor is not a function"

ios - React Native 在 iOS 应用程序进入后台时将新的图像副本加载到内存中