react-router官网:https://reactrouter.com/en/main/hooks/use-navigate
组件官网地址:http://react-router.docschina.org/web/guides/philosophy
第一步:安装 react-router-dom 库
注意:使用路由相关组件,需在最外层包裹 HashRouter 或 BrowserRouter 组件
react-router-dom5 功能
1. 路由跳转
- Link组件可以通过to属性直接跳转或传入对象添加search/state属性传参
- NavLink组件包含Link组件功能扩展,例如:可以使用高亮
2. 路由匹配
- Switch组件精准匹配路由,匹配相应的path到则停止匹配后面的路由(优化)
- Route组件开启严格匹配添加exact属性,例如:to="home/a" 匹配 path="/home" 开启严格模式后则匹配不到 path,注:但不能所有都开启严格匹配,可能会影响二级路由
- Redirect组件,当路由path没有匹配到对应的路由时,可以添加一个to=""属性,值为已经存在路由地址,重定向跳转过去,兜底使用,所以写在所有路由的最下方
3. 路由传参
params参数 获取:match.params
路由链接:<Link to='/demo/test/tom/18'}>详情</Link>
注册路由:<Route path="/demo/test/:name/:age" component={Test}/>
search参数 获取:location.search
路由链接:<Link to='/demo/test?name=tom&age=18'}>详情</Link>
注册路由:<Route path="/demo/test" component={Test}/>
注:获取到的search是urlencoded编码字符串,可以借助querystring库的parse方法解析
state参数 获取:location.state
路由链接:<Link to={{pathname:'/demo/test',state:{name:'tom',age:18}}}>详情</Link>
注册路由:<Route path="/demo/test" component={Test}/>
注:刷新也可以保留住参数
4. whitRouter组件 (非路由组件包裹后可以获取history对象)
源码学习别人的:https://juejin.cn/post/6886290490640039943