Javascript 如何从组件外部访问路由参数?

Javascript 如何从组件外部访问路由参数?,javascript,react-router,redux,Javascript,React Router,Redux,如何从位置计算参数。我正在使用redux并重新选择。我曾经在一些选择器中访问router.params。现在我只能访问routing.location 我试图在react router中找到一个助手函数,但没有找到 谢谢你的帮助 不幸的是,路由器很难使用。就我个人而言,我做了以下工作: 在主路线组件(App)中定义两种方法: constructor(props) { super(props); globalModel.router.set(props); } com

如何从位置计算参数。我正在使用redux并重新选择。我曾经在一些选择器中访问router.params。现在我只能访问routing.location

我试图在react router中找到一个助手函数,但没有找到


谢谢你的帮助

不幸的是,路由器很难使用。就我个人而言,我做了以下工作: 在主路线组件(App)
中定义两种方法:

  constructor(props) {
    super(props);
    globalModel.router.set(props);
  }

  componentWillReceiveProps(nextProps) {
    globalModel.router.set(nextProps);
  }

因此,我在globalModel(可能是flux store)中有当前的路由器道具。

路由器与Redux没有关系,无法向您提供类似于
state.router.params的东西

您可能会将其与您仍然可以使用的某个社区软件包相混淆。您可能切换到更稳定的,但故意不让您从状态访问路由参数。这两个库在各自的自述中解释了它们的差异,因此我鼓励您阅读这两个库,并选择一个更适合您的需要

不过,您不必使用这些库中的任何一个

一般来说,我们建议您只在路由处理程序组件中使用从路由器本身接收的道具。确保它已连接,并使用
mapstatetops
的第二个参数读取路由参数:

function mapStateToProps(state, ownProps) {
  const id = ownProps.params.id
  return {
    post: state.posts[id]
  }
}

类似地,当您在选择器本身上定义第二个
props
参数时,您可以通过重新选择访问props。
重新选择自述文件。从技术上讲,您仍然在从组件传递参数,但是您的选择器可以通过这种方式访问这些参数。

非常感谢!我从reselect的文档中漏掉了这个信息。如果这对你有帮助,你介意接受答案吗?