React Router
关于 React Router 相关知识点总结, 持续更新中……
基础概念
React Router 是 React 应用程序的标准路由库,最新版本带来了许多现代化的路由特性。
主要组件
BrowserRouter
: 使用 HTML5 history API 的路由器Routes
: 路由匹配容器Route
: 路由规则定义Link
: 导航链接NavLink
: 带有激活状态的导航链接Navigate
: 编程式导航组件Outlet
: 子路由渲染位置
基本用法
1. 路由配置
import { BrowserRouter, Routes, Route } from 'react-router-dom';
function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
<Route path="/users/:id" element={<UserProfile />} />
<Route path="*" element={<NotFound />} />
</Routes>
</BrowserRouter>
);
}
2. 导航链接
import { Link, NavLink } from 'react-router-dom';
function Navigation() {
return (
<nav>
<Link to="/">首页</Link>
<NavLink
to="/about"
className={({ isActive }) => isActive ? 'active' : ''}
>
关于
</NavLink>
</nav>
);
}
3. 嵌套路由
function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Layout />}>
<Route index element={<Home />} />
<Route path="dashboard" element={<Dashboard />}>
<Route path="profile" element={<Profile />} />
<Route path="settings" element={<Settings />} />
</Route>
</Route>
</Routes>
</BrowserRouter>
);
}
function Layout() {
return (
<div>
<nav>{/* 导航栏 */}</nav>
<Outlet /> {/* 子路由渲染位置 */}
</div>
);
}
高级特性
1. 路由守卫
function PrivateRoute({ children }) {
const auth = useAuth(); // 自定义 hook 检查认证状态
if (!auth.isAuthenticated) {
return <Navigate to="/login" replace />;
}
return children;
}
// 使用方式
<Route
path="/dashboard"
element={
<PrivateRoute>
<Dashboard />
</PrivateRoute>
}
/>