前言
React 是一個強大的 JavaScript 函式庫,專門用於建立使用者介面。不過,React 本身並未內建「頁面路由」功能。如果你想要為你的 React 專案加入多個頁面,例如首頁、部落格、聯絡我們頁面等等,就必須引入額外的工具。而在眾多路由解決方案中,React Router 是最受歡迎且廣泛使用的選擇。
本文將帶你從零開始,教你如何在使用 Create React App 建立的專案中導入 React Router,並建立一個基本的多頁面架構。
重點摘要
- React 本身不包含頁面路由功能
- React Router 是 React 中最常用的路由套件
- React Router v6 是目前最新的主要版本
- 需安裝
react-router-dom 套件來使用瀏覽器路由功能
- 使用
<BrowserRouter>, <Routes>, <Route> 建立路由結構
- 使用
<Outlet> 顯示巢狀路由對應的內容
- 使用
<Link> 而非 <a> 進行頁面內部連結
安裝 React Router
在你的 React 專案根目錄下,打開終端機,執行以下指令安裝 React Router:
npm i -D react-router-dom
|
如果你是從 React Router v5 升級,建議加入 @latest 旗標:
npm i -D react-router-dom@latest
|
建立頁面資料夾與基本結構
為了建立多頁面應用,我們需要在 src 資料夾中新增一個 pages 資料夾,並在其中建立五個頁面元件:
src/pages/ ├── Layout.js ├── Home.js ├── Blogs.js ├── Contact.js └── NoPage.js
|
每個檔案都將包含一個簡單的 React 函式元件。
設定主路由(index.js)
在 src/index.js 中引入路由模組與頁面元件,並建立應用程式主結構:
import ReactDOM from 'react-dom/client'; import { BrowserRouter, Routes, Route } from 'react-router-dom'; import Layout from './pages/Layout'; import Home from './pages/Home'; import Blogs from './pages/Blogs'; import Contact from './pages/Contact'; import NoPage from './pages/NoPage';
export default function App() { return ( <BrowserRouter> <Routes> <Route path="/" element={<Layout />}> <Route index element={<Home />} /> <Route path="blogs" element={<Blogs />} /> <Route path="contact" element={<Contact />} /> <Route path="*" element={<NoPage />} /> </Route> </Routes> </BrowserRouter> ); }
const root = ReactDOM.createRoot(document.getElementById('root')); root.render(<App />);
|
說明範例運作原理
- **
<BrowserRouter>**:外層包住整個路由結構,提供瀏覽器路由功能。
- **
<Routes> 與 <Route>**:定義所有路由規則與對應的元件。
- **巢狀
<Route>**:Layout 元件作為共同外框,其下包含巢狀頁面路由。
- **
<Route index>**:定義 / 路徑的預設頁面為 Home。
- **
<Route path="*">**:匹配所有未定義的網址,用於顯示 404 頁面。
建立頁面元件
Layout.js(共享頁面結構)
import { Outlet, Link } from 'react-router-dom';
const Layout = () => { return ( <> <nav> <ul> <li> <Link to="/">Home</Link> </li> <li> <Link to="/blogs">Blogs</Link> </li> <li> <Link to="/contact">Contact</Link> </li> </ul> </nav>
<Outlet /> </> ); };
export default Layout;
|
- 使用
<Link> 元素建立頁面間的連結。
<Outlet> 負責渲染目前選中的頁面內容。
Home.js
const Home = () => { return <h1>Home</h1>; };
export default Home;
|
Blogs.js
const Blogs = () => { return <h1>Blog Articles</h1>; };
export default Blogs;
|
const Contact = () => { return <h1>Contact Me</h1>; };
export default Contact;
|
NoPage.js(404 頁面)
const NoPage = () => { return <h1>404</h1>; };
export default NoPage;
|
總結
透過 React Router,我們可以很輕鬆地為 React 應用程式建立一個多頁面的瀏覽體驗。本篇教學展示了如何安裝 React Router、建立路由結構、撰寫頁面元件,並結合 <Outlet> 與 <Link> 實現共用頁面框架與路由切換。這只是入門,React Router v6 還支援更多進階功能,例如動態路由、路由守衛、路由參數等,適合進一步探索使用。
參考文件
- React Custom Hooks
- React router 官方網站
Comments