我想知道使用最新版本 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/