1.路由传参
1.动态路由传参
使用prop进行接收 props.match.params.参数名
2.query传参
this.props.history.push({
pathname: ‘路由’,
query:{参数名:参数值}
})
接收:
this.props.location.query.参数名
3.state传参
this.props.history.push({
pathname: ‘路由’,
state:{参数名:参数值}
})
接收:
this.props.location.state.参数名
2.路由拦截
正常我们创建路由都是
<Route path="" component={组件}></Route>
我们也可以写成
<Route path="" render={(props) => {
在这里我们可以进行路由拦截,处理一些东西,判断要显示那个组件
由于我们在函数中组件已经实例化,我们在其他组件中通过props进行路由跳转会发生报错,拿不到props,所以我们需要在render函数中将
props传入,将props传入组件中,例如:<Clird {...props}/>,这样就可以通过props进行跳转
}}></Route>
3.路由模式
HashRouter这个是hash模式,带#号的,如果不想使用#,我们可以将HashRouter换为BrowserRouter就可以了
4.withRouter
当子组件中无法拿到props时,我们通常使用withRouter()方法进行包裹,将返回值赋予一个新变量,这个变量就是我们包裹完的新组件将这个组件替换原来的组件就可以就
const 新组件名 = withRouter(组件名)