react-router-dom需要自行安装,目前的v5和v6版本用法上的主要区别:
-
匹配一个路由包裹组件
v5:<Switch></Switch>
v6:<Routes></Routes>
-
注册路由指向的组件属性:
v5:component
值为组件名称,如Home
v6:element
值为组件<Home/>
-
嵌套路由:
v5:需要写父级路由,如/home/news
v6:不写父级路由,如news
-
重定向:
v5:用Redirect标签
,如:<Redirect to="/home">
v6:用Route
,element
值为Navigate标签
,如:<Route path="*" element={<Navigate to="home"/>}/>
-
精准匹配与模糊匹配:
v5:默认是模糊匹配,通过在Route配置加exact开启精准匹配
v6:默认开启精准匹配,加/*开启模糊匹配
v6相关代码:
一般路由:(
{/* 注册路由 */}
<Routes>
{/* 初始页面指向Home */}
<Route path="*" element={<Navigate to="/home" />} />
<Route path="/about" element={<About/>}/>
<Route path="/home/*" element={<Home/>}/>
</Routes>
嵌套路由:
{/* 注册路由 */}
<Routes>
<Route path="*" element={<Navigate to="news" />}/>
<Route path="news" element={<News/>}/>
<Route path="message" element={<Message/>}/>
</Routes>