iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
Modern Web

30天入門:學會第一個前端框架-React系列 第 28

Day 28 | React入門:React Router v6 新舊版本前後差異

  • 分享至 

  • xImage
  •  

Day 18 | React入門:React Router 路由控制(上)Day 19 | React入門:React Router 路由控制(下)
的文章中,我們看到路由在專案中可以怎麼應用,而這篇文章主要聚焦在 React Router v6 與前一版本的差異。

為什麼 React Router v6 要大幅改變

簡化API,減少樣板代碼

  • v5 時期有 SwitchRouteRedirectexact 等屬性,寫法較冗長
  • v6 把這些東西整合,例如:
    • exact 被移除,v6 會自動自動比對「最精確」的路由
    • Redirect<Navigate /> 取代,更直覺

配合 React Hooks 的方向設計

  • v5 還停留在 class component 時代的設計,像 Route 自動傳 matchhistorylocation
  • v6 改成 useParamsuseNavigateuseLocation,符合 hooks 的精神,讓寫法更一致

巢狀路由寫法更直觀

  • v5 寫巢狀路由需要在子元件裡額外定義一個 Route,結構容易分散
  • v6 可以直接在 <Routes> 中宣告子路由 <Route>,就像 React JSX 的巢狀結構一樣,一眼就能看出父子關係
v5(舊版) v6 / v7 (新版)
Router 寫法 <Switch> 包住 routes <Routes> 包住 routes
Route 指定元件 <Route path="/about" component={About} /> <Route path="/about" element={<About />} />
預設比對 <Route exact path="/"> 才能精確比對 exact 被移除,預設就是精確比對
巢狀路由 子元件內再寫 <Route> <Routes> 中直接寫巢狀 <Route>
取得路由參數 props.match.params.id const { id } = useParams();
導頁 history.push('/home') navigate('/home');
重新導向 Redirect <Redirect to="/home" /> <Navigate to="/home" />

總結

該如何選擇版本?

新專案建議使用最新版本 (v6/v7),因為語法更簡單,巢狀路由更直覺。
舊專案如果已經使用 v5,升級時要更注意改動。


上一篇
Day 27 | React入門:useContext-共享全域狀態
下一篇
Day 29 | React入門:提升 React 開發效率-DevTools、VS Code 擴充與 Icons
系列文
30天入門:學會第一個前端框架-React29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言