React router已经V6了?
首先V6版本已经支持新的ts语法支持,使用了最新的api,那么我们一起看看所有的改动:
-
Switch 全部改为Routes首先第一个就是路由不为顺序选择,现在为最佳匹配。path中的*号可以不加,同时route path 和 link to中的对应关系。同时注意如果分散在子组件中,那么尾部需要加上 *
-
react 的render或component 改为element,同时不需要renderProps可以直接挂载在组件上props传递数据,同时使用hook的方法,通过useParams, useLocation就可以拿到这些信息。最重要的是V6 的children是用来嵌套路由!!
-
在jsx中写入index属性代表是主路由,不能为true,即为不能放置子组件。
-
组件layout类似父路由,outlet更像是作用域插槽,用于匹配子路由的element
-
通过useRoutes生成对应的element结构,类似vue的挂载routes
-
route的link to内部的...代表是基于父级Route的path
-
新的api: state属性 replace属性 target属性
-
useHistory被干掉了,换成了useNavigate, 移除了原来的history.push 为navigate(to,{replace:true}) navigate({to: number})