react- router

250 阅读1分钟

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

react-router-dom6功能

别人写的:https://juejin.cn/post/7073405036025348110