背景:
有人说:
“withRouter可以包装任何自定义组件,将react-router 的 history,location,match 三个对象传入。
无需一级级传递react-router 的属性,当需要用的router
属性的时候,将组件包一层withRouter,就可以拿到需要的路由信息”
还有人说:
如果使用了react-router-redux,则可以直接从state
中的router属性中获取location。不需要再使用withRouter 获取路由信息了
withRouter 就为了获取this.props.location吗,还有没有哪些没注意的地方但是withRouter
起了很大作用的例子?
目的就是让被修饰的组件可以从属性中获取
history
,location
,match
,路由组件可以直接获取这些属性,而非路由组件就必须通过
withRouter
修饰后才能获取这些属性了,比如
App
组件就可以直接获取路由中这些属性了,但是,如果App
组件中如果有一个子组件Foo
,那么Foo
就不能直接获取路由中的属性了,必须通过withRouter
修饰后才能获取到。