React Router己經更新到v6版本了,它和v5版本在使用上有些許不同。
1. 不再使用Switch標籤,改為Routes標籤,將所有不同的route包裝在< Routes >中。
2. 每個路由組件不需內崁在< Route>< /Route>中,改為< Route /> Self-closing tag。
每個路由組件,都需設定element ={prop} 指派這條路徑要顯示的頁面組件。
< Route path="/about" element={< About/>} />
3. react v6 不再支持exact path="/",這是因為默認情況下所有路徑都完全匹配。
4. Add a “No Match”Route,
當沒有其他路由與 URL 匹配時,可以使用path="*".路由器僅在沒有其他路由匹配時才會選擇它。
在element prop={}可寫入jsx語法,顯示畫面。
< Route path="*" element={(
<div>
<h1>Error 404 </h1>
<P> Page not found </P>
< /div>
)} />
之前V5路由設定如下
import { BrowserRouter, Link,Navigate, Route,Switch} from 'react-router-dom'
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about">
<About />
</Route>
<Route path="/products/:id">
<ProductDetails />
</Route>
<Route path="/products">
<Products />
</Route>
</Switch>
V6新的設定
import { BrowserRouter, Link,Navigate, Route,Routes} from 'react-router-dom'
<Routes>
<Route path="/" element={<Home/>} />
<Route path="/about" element={<About/>} />
<Route path="/products/:id" ement={<ProductDetails />} />
<Route path="/products" element={<Products />} />
</Routes>