reactjs - 在 React Router v4 中是否可以订阅路由更改?

标签 reactjs react-router browser-history

我想知道使用最新版本 react-router 订阅浏览器历史记录更改的最佳模式是什么? 。我正在阅读当前的documentation ,但看起来唯一提到的选项是显式检索 <Match/> 传递的 props容器到render功能或到component 。此处还描述了此解决方案:

https://stackoverflow.com/a/41006114/2817257

但是如果我想以一种干净的方式在组件树中更深入地获取路由参数怎么办?

我正在考虑的是创建一个检索 router 的容器组件来自上下文并订阅位置更改。但是,当前版本4.0.0-alpha.6即使 router对象已经在上下文中,它只包含以下方法:

  • block 转换
  • 创建Href
  • 替换为
  • 过渡到

这不是很有希望,因为它看起来像 router没有暴露history根本没有对象。也许添加到上下文中的其他对象可能会有所帮助?

最佳答案

react-router 文档在 ATM 上,但在 v3 中你可以传递 an onUpdate function作为 Router 组件的 Prop 来监听路由器状态更改。

另一个选项是导入 browserHistory,它是通过 history 实现的。 (再次 v3 知识,因为 v4 文档已关闭)并使用 listen 订阅历史更改,如下所示

import { browserHistory } from 'react-router'

browserHistory.listen((location, action) => {
  // do whatever you need here
})

关于reactjs - 在 React Router v4 中是否可以订阅路由更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41882592/

相关文章:

javascript - 使用 React v4 进行子路由?

reactjs - 如何隐藏组件而不是卸载它?

javascript - 如何通过分配 window.location 在历史记录中留下链接?

Javascript:历史记录未加载页面

尝试将新属性添加到 redux 状态时,javascript map.set 不起作用

javascript - 如何在 Apollo 客户端的初始化中使用来自 React 的全局数据?

node.js - 我可以在没有 nodejs 服务器的情况下在客户端使用 webpack 吗?

reactjs - 在开发模式下使用create-react-app时如何将应用程序放入子文件夹中?

javascript - 未捕获的类型错误 : Cannot call a class as a function

javascript - jQuery Mobile嵌套列表刷新解决方案