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

时间:2017-01-26 20:40:17

标签: reactjs react-router browser-history

我想知道使用最新版本的react-router订阅浏览器历史记录更改的最佳模式是什么。我正在阅读当前的documentation,但它看起来是唯一一个通过明确检索<Match/>容器传递给render函数或{{1}的道具的选项。 }}。此解决方案也在此处描述:

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

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

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

  • blockTransitions
  • createHref
  • replaceWith
  • transitionTo

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

1 个答案:

答案 0 :(得分:0)

react-router文档已关闭ATM,但在第3版中,您可以将an onUpdate function作为道具传递给Router组件,以侦听路由器状态更改。

其他选项是导入browserHistory,这是history实现的(再次v3知识,因为v4文档已关闭)并使用listen订阅历史记录更改,就像这样

import { browserHistory } from 'react-router'

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