在開發 React 應用程式時,我們會利用 react-router-dom 來做路由控制,不過,當使用者輸入一個不存在的路徑時,預設情況下的頁面不會顯示任何內容,可能讓使用者不明白目前的狀況。
因此,通常會設置一個 404 NotFound 頁面,提醒使用者該路徑不存在,並提供返回首頁或其他導覽的方式。
在 React 這類的單頁應用程式 ( SPA, Single Page Application ) 中,所有路由請求通常都會先被導向 index.html
,再由前端的 React Router 來決定要呈現哪個頁面。
因此,前端需要模擬一個「兜底路由」,來處理使用者輸入不存在路徑的情況。
和傳統伺服器端的 404 不同:
這個元件會在使用者輸入不存在的網址時顯示
NotFound.js
import { Link } from "react-router-dom"
export default function NotFound(){
return (
<div>
<h2>找不到頁面</h2>
<p>回到<Link to ="/">首頁</Link></p>
</div>
)
}
App.js
import NotFound from "./NotFound";
<Route path="*" element={<NotFound />}></Route>
path="*"
:代表「配對所有未定義的路由」/
→ 正常進入首頁/blogs/1
、/blogs/2
、/blogs/3
→ 進入 BlogDetails/不存在的路徑
→ 進入到 NotFound 頁面瀏覽器執行畫面
path="*"
做兜底