反应导航重置说明

时间:2017-06-29 15:12:11

标签: javascript reactjs react-native redux react-navigation

我已经检查了一段时间,并且有很多文档,但同时也没有。 我有问题从react-navigation调用reset方法。我有以下StackNavigator

const Routes = StackNavigator({
  Home: { screen: CheckLogin(App), navigationOptions: { header: null } },
  Options: { screen: Options, navigationOptions: { title: 'Settings' } },
  Dashboard: { screen: Dashboard },
});

所以家里就像登录一样,选项只是一个带有一些选项的页面,一旦你被重定向,仪表板就是主页面。 关键是在Home上,我正在检查是否存储了先前的访问令牌,因此它可以直接进入仪表板屏幕。我的问题是它似乎回到了箭头而我不想这样,所以一个好方法可以重置路线。

在我的Dashboard组件中,我已经放入componentDidMount(不知道在哪里放置它)以下代码:

const resetAction = NavigationActions.reset({
      index: 1,
      actions: [
          NavigationActions.navigate({ routeName: 'Home' }),
          NavigationActions.navigate({ routeName: 'Dashboard' })
      ]
    });

      this.props.navigation.dispatch(resetAction);

所以我理解:操作是您可以使用的路径,索引是您想要进入actions数组位置的路径。因此,我的actions数组中的位置1是Dashboard组件。这部分文档有点令人困惑,所以我不确定。

此代码不起作用。它在我的应用程序主页和仪表板之间创建了一个无限循环。

有没有办法当我到达Dashboard组件时,删除后退箭头将其替换为另一个完全不同的链接?如果解决方案是重置。你能解释一下这里有什么问题以及它是如何运作的吗?

我非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为您想要的是在您确定用户已登录后,从主屏幕调用此内容。

const resetAction = NavigationActions.reset({
  index: 0,
  actions: [
      NavigationActions.navigate({ routeName: 'Dashboard' })
  ]
});

  this.props.navigation.dispatch(resetAction);

此NavigationActions.reset()函数正在执行的操作是执行“actions”键中指定的操作,并将结果状态拼接到指定索引(来自“index”键)的导航历史记录中,并删除导航历史记录中的所有后续项目

您的可用路线在提供给导航器的参数中指定,而不是在此参数的“操作”键中指定。