react-withRouter 用法
2023-04-25 本文已影响0人
云高风轻
1. 前言
react-router-dom
5x版本 里面 还是有withRouter
的- 简单说下用法
2. withRouter 功能
- 把不是通过路由切换过来的组件中,将react-router 的 history、location、match 三个对象传入props对象上
- 用法也非常简单 就是把组件 作为
withRouter()
的从参数就行
3. 相关代码
import React from "react";
import { withRouter } from "react-router-dom";
function PlayCom(props) {
console.log("子组件-props", props);
return (
<div className="box">
<div className="my-title">子组件</div>
<button onClick={() => {
props.history.push("/");
}}> 跳转</button>
</div>
);
}
// 正常导出 不具备 路由/BOM 功能
// export default PlayCom;
// 高阶函数 参数是组件的函数
// 高阶组件 让我们 的组件 具备 更多的功能
// withRouter 自动注入 BOM 相关 API
export default withRouter(PlayCom);
//子组件默认 不具备 路由相关的 API
// route 配置 的时候
// 会自动给 路由页面 注入 相关 API
5. 延伸一个路由传参方式
- 相关代码
- 也可以在路由配置的时候 传递参数
{/* 自己注入内容 / 扩展功能 高阶函数
// 形参默认就是路由对象/BOM
/ r routeProps
*/}
<Route exact path="/blog/ios" render={(routeProps)=>{
// 父子组件传参
// return <IosPage name={r}/>
return <IosPage {...routeProps} salary="18k" />
}} />
- 如果不传递 从传递
routeProps
/形参- 当前这个页面 其实也不具备 history、location、match 三个对象