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(组件名)