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

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐