我想知道使用最新版本的react-router订阅浏览器历史记录更改的最佳模式是什么.我正在阅读当前的 documentation,但它看起来是唯一的选项,通过明确检索 Match /传递的道具.容器到渲染功能或
https://stackoverflow.com/a/41006114/2817257
但是如果我想以干净的方式在组件树中更深入地获取路由参数呢?
我在想的是创建一个容器组件,从上下文中检索路由器并订阅位置更改.但是,对于当前版本4.0.0-alpha.6,即使路由器对象已经在上下文中,它也只包含以下方法:
> blockTransitions
> createHref
> replaceWith
> transitionTo
这不是很有希望,因为看起来路由器根本不暴露历史对象.也许还有一些其他对象被添加到上下文中可能会有所帮助?
react-router docs是关闭ATM的,但在v3中你可以将 anonUpdate
function作为prop传递给Router组件来监听路由器状态的变化.
其他选项是导入browserHistory,这是用history
实现的(再次v3知识为v4文档已关闭)并使用listen订阅历史记录更改,如下所示
import { browserHistory } from 'react-router' browserHistory.listen((location, action) => { // do whatever you need here })