路由器docs上有关何时将withRouter
与redux一起使用的一些信息。但是,我发现它们并不十分清楚。
例如,文档说何时使用withRouter
- 该组件通过connect()(Comp)连接到redux。
- 该组件不是“路由组件”,这意味着它的呈现方式不是这样:
有些不清楚的事情是:
connect(mapStateToProps)(Comp)
时不使用withRouter
很好吗?withRouter
应用于不是“路由组件”的任何组件(是否由connect
编辑?)?更新:经过一些exploration之后,看来路由器4.4版本不再是问题。
答案 0 :(得分:1)
在第一种情况下,这意味着当我拥有connect(mapStateToProps)(Comp)时,最好不要与Router一起使用吗?
connect()(Comp)
表示它是连接的组件,并不意味着withRouter
对于诸如connect
之类的其他connect(mapStateToProps)(Comp)
自变量可能是不必要的。 The documentation也提到了这一点:
// before
export default connect(mapStateToProps)(Something)
// after
import { withRouter } from 'react-router-dom'
export default withRouter(connect(mapStateToProps)(Something))
这是否意味着我们应该将withRouter应用于不是“路由组件”的任何组件(是否已连接?)?
如果不是路由组件,则应将withRouter
应用于组件,并且我们希望在位置更新时对其进行更新,即,它以某种方式使用route props。一个流行的示例是导航菜单,其中突出显示了活动项,它不是路线组件,但需要知道当前路线。
还是为什么不将withRouter附加到任何连接的组件上,它不能涵盖所有情况?
这将为可能不需要它们的组件(因为它们不使用路由道具)提供有关路由器事件的不必要更新。