路由是单页应用程序(SPA)中管理应用程序不同视图或页面之间的导航过程。在 React 应用程序中,可以使用 React Router 库来轻松处理路由。
安装 React Router
要开始使用 React Router,需要先安装它:
npm install react-router-dom
创建路由
React Router 使用 <BrowserRouter>
组件来管理浏览器历史记录和 URL。<Route>
组件用于定义应用程序的不同视图或页面。
import {
BrowserRouter, Route } from "react-router-dom";
const App = () => {
return (
<BrowserRouter>
<Route path="/" exact component={
Home} />
<Route path="/about" component={
About} />
<Route path="/contact" component={
Contact} />
</BrowserRouter>
);
};
在上面的示例中,我们定义了三个路由:/
、/about
和 /contact
。每个路由都有一个关联的组件,当用户导航到该路由时,该组件将被渲染。
导航链接
<Link>
组件用于在路由之间导航。它本质上是一个带有 href
属性的 <a>
标签,但它不会导致页面重新加载。
import {
Link } from "react-router-dom";
const Header = () => {
return (
<nav>
<Link to="/">Home</Link>
<Link to="/about">About</Link>
<Link to="/contact">Contact</Link>
</nav>
);
};
动态路由
可以使用冒号(:
)定义动态路由,这允许将参数传递给组件。
<Route path="/user/:id" component={
User} />
在上面的示例中,/:id
是一个动态路由段,它将接收一个 ID 参数并将其传递给 User
组件。
受保护路由
可以使用高级路由保护功能来限制对某些路由的访问。例如,如果要保护 /admin
路由,只有经过身份验证的用户才能访问,可以使用以下代码:
import {
Route, Redirect } from "react-router-dom";
import {
useAuth } from "./ useAuth";
const AdminRoute = ({
component: Component, ...rest }) => {
const {
isAuthenticated } = useAuth();
return (
<Route {
...rest} render={
(props) => (
isAuthenticated ? <Component {
...props} /> : <Redirect to="/login" />
)} />
);
};
嵌套路由
React Router 还支持嵌套路由,这允许在单个路由中定义多个子路由。
<Route path="/products">
<Route path="/" exact component={
Products} />
<Route path="/:id" component={
ProductDetails} />
</Route>
在上面的示例中,/products
路由嵌套了两个子路由:/
和 /:id
。
结论
React Router 是一个功能强大的库,可用于轻松管理 React 应用程序中的路由。通过使用 <BrowserRouter>
、<Route>
和 <Link>
组件,开发人员可以创建复杂且用户友好的导航体验。