在react组件中,不是所有组件会通过路由跳转,也需要抓取路由上下文时,解决方案
我们可以看到user组件在React Developer Tools管理工具中的props属性中是存在history,location,match这些上下文
,
document.getElementById('root')
//这是我们之前的代码,显然App组件没有通过路由跳转
)
import {BrowserRouter, Route} from 'react-router-dom'
ReactDom.render(
,
document.getElementById('root')
)
//结构出react-router-dom的Router,来实现路由跳转
这样我们就会看到我们的App组件拿到了路由上下文,并且被Route套了起来
这样便会拿到路由上下文
我们也可以直接将props传给ChildA,这样同样可以收到上下文
不过推荐单个属性直接传,毕竟我们的props还有其他属性
import {withRouter} from 'react-router-dom'
class App extends Component{}
export default withRouter(App)
withRouter | 把不是通过路由切换过来的组件中,将 history、location、match 三个对象传入props对象上 |
---|