快速開始在您的 React 應用程式中使用 Reach Router
在最近的一個專案中,我使用了 Reach Router ,我認為這是在 React 應用程式中實現路由的最簡單方法。
相比於我之前使用過的 React Router 來說,我覺得 Reach Router 更容易上手。
以下是一個短短五分鐘的教學,讓您快速了解 Reach Router 的基本用法。
安裝
首先,在命令行輸入以下指令安裝 Reach Router:
npm install @reach/router
如果您對
@
的語法不熟悉,它是 npm 的一個功能,允許使用專屬的套件名稱空間來命名套件。
接下來,將它引入到您的專案中:
import { Router } from '@reach/router'
基本用法
我在頂層 React 檔案 index.js
中使用它,通常是在 create-react-app 安裝中,我將所有想要顯示的元件包裝在內:
ReactDOM.render(
<Router>
<Form path="/" />
<PrivateArea path="/private-area" />
</Router>,
document.getElementById('root')
)
我在元件上添加的 path
屬性可用於設定它們的路徑。換句話說,當我在瀏覽器的網址欄輸入這個路徑時,Reach Router 就會顯示對應的元件給我看。
/
路徑是預設路由,也就是當您在應用程式網域之外沒有設置 URL / 路徑時,它將顯示。也就是說,它是「首頁」。
預設路由
當使用者訪問一個沒有匹配到任何路由的 URL 時,Reach Router 預設會導向 /
路由。您可以添加一個 default
路由處理這種情況,並顯示一個漂亮的「404」訊息:
<Router>
<Form path="/" />
<PrivateArea path="/private-area" />
<NotFound default />
</Router>
以程式方式改變路由
使用 navigate
函數在應用程式中以程式方式改變路由:
import { navigate } from '@reach/router'
navigate('/private-area')
在 JSX 中連結路由
使用 Link
元件,使用 JSX 連結到您的路由:
import { Link } from '@reach/router'
<Link to="/">首頁</Link>
<Link to="/private-area">私人區域</Link>
URL 參數
使用 :param
語法來添加參數:
<Router>
<User path="users/:userId" />
</Router>
然後在假設的 User 元件中,我們可以使用 userId
作為屬性:
const User = ({ userId }) => (
<p>使用者 {userId}</p>
)
巢狀路由
我在前面的頂層 React 檔案中向您展示了如何定義路由:
<Router>
<Form path="/" />
<PrivateArea path="/private-area" />
</Router>
您可以定義巢狀路由:
<Router>
<Form path="/" />
<PrivateArea path="/private-area">
<User path=":userId" />
</PrivateArea>
</Router>
現在,您可以將您的 /private-area/23232
鏈接指向 User 元件,並將 userId
作為參數傳遞。
您還可以選擇允許元件在其內部定義自己的子路由。只需在路由之後使用 /*
通配符即可:
<Router>
<Form path="/" />
<PrivateArea path="/private-area/\*" />
</Router>
然後在該元件內部,您可以再次引入 Router,並定義它自己的子路由集合:
//component PrivateArea
<Router>
<User path="/:userId" />
</router>
任何 /private-area/something
的路徑都會由 User 元件處理,並且該路徑之後的部分都將作為 userId
屬性傳遞。
要在 /private-area
路徑中顯示一些內容,您還需要在 PrivateArea
元件中添加一個 /
路由處理:
//component PrivateArea
<Router>
<User path="/:userId" />
<PrivateAreaDashboard path="/" />
</router>