javascript - React-navigation重置说明

标签 javascript reactjs react-native redux react-navigation

我已经检查这个问题有一段时间了,有很多文档,但同时什么也没有。 我在从 react 导航调用重置方法时遇到问题。我有以下 StackNavigator

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

所以主页可能就像一个登录,选项只是一个带有一些选项的页面,仪表板是重定向后的主页。 关键是,在主页上,我正在检查是否存储了以前的访问 token ,因此它直接进入仪表板屏幕。我的问题是,它出现了返回的箭头,而我不希望出现这种情况,因此一个好的方法可以重置路线。

在我的仪表板组件中,我在 componentDidMount 中放入了以下代码(不知道该放在哪里):

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

      this.props.navigation.dispatch(resetAction);

所以我的理解是:操作是您可以走的路线,索引是您想要进入操作数组的位置的路线。所以我的 actions 数组中的位置 1 是仪表板组件。这部分在文档中有点令人困惑,所以我不确定。

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

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

我真的很感谢任何帮助。

最佳答案

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

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

  this.props.navigation.dispatch(resetAction);

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

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

关于javascript - React-navigation重置说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44828974/

相关文章:

javascript - heroku 配置变量为 Nodemailer 设置电子邮件

javascript - 从 javascript 节点对象生成无序列表

javascript - 两个变量在 Node.js 中使用 require (引用问题)引用相同的 config.js 文件

JavaScript 使用 async/await 确保我在实现之前检索值,但仍然返回 'undefined'

reactjs - React 未命中 kubernetes 集群上的 django api

javascript - 有没有办法在 react-native 新 Assets 系统中要求非图像 Assets ?

javascript - Python:从javascript按钮获取下载链接

javascript - 将 JSX 元素呈现为多层金字塔

ios - 如何在 react 原生 ios 应用程序中更新应用程序版本?

react-native - 使用 tcp 而不是 webSocket react native paho mqtt