React — React Router
什麼是 React Router ?
在傳統的網頁裡,如果瀏覽器要改變頁面,都必須要向伺服器發出請求 (request) 來要到相對應的資源內容,然後再去渲染新的頁面,但每當使用者按下一個連結,就會重新再刷新的動作其實會造成使用者體驗不是太好。
於是,React router 為了改善這個現象,他可以讓網頁在不透過跟伺服器請求 (request) 的動作下,就算更改網址路徑也可以即時更新頁面,大大提升使用者瀏覽網站的體驗 !
為何要使用 React Router DOM ?
- 支援度廣、彈性大
- 社群生態廣
- 更多好用的方法
- 全部都是 ReactJS 元件
為什麼前端網頁需要路由應用 ?
前端網頁的路由器,就是網際網路中路由應用的縮影
- 優化 SPA(Single Page Application) 單頁式應用
- 更好管理顯示內容
- 更好辨識頁面意圖
- 更方便做網頁快取
- 優化 SEO
安裝 react-router-dom
Step1. 打開終端機並下載 react-router-dom
1 | npm i react-router-dom |
Step2. 在 index.js 載入 BrowserRouter
,並使用 <BrowserRouter></BrowserRouter>
放在 <App />
之間
1 | import { BrowserRouter } from 'react-router-dom'; |
Step3. 在 App.js 載入 react-router-dom
,並定義會用到的元件,我們將會去使用他們
1 | import { Route, Routes, Link, NavLink } from 'react-router-dom'; |
React Router 元件使用方式
Routes 和 Route
Link
NavLink
React Router 的 Hooks
useNavigate
useLocation
useParams
useSearchParams
useSubmit
認識 History PushState API
每次變化都會被記錄在 history stack 中,因此可以操作瀏覽器原生歷史紀錄
history.pushState(state: object, URL: string)
- state — 可以記錄一個物件當歷史紀錄
- title — 改變網頁標題 (支援度低)
- URL — 改變網址路徑 (直接改變而不重新整理)