react如何设置路由
如何在React中设置路由
React本身不包含内置的路由功能,通常使用react-router-dom库来实现路由管理。以下是具体设置方法:
安装react-router-dom
npm install react-router-dom
基本路由配置
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';
function App() {
return (
<Router>
<nav>
<Link to="/">Home</Link>
<Link to="/about">About</Link>
</nav>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</Router>
);
}
动态路由参数
<Route path="/users/:id" element={<UserProfile />} />
// 在组件中获取参数
import { useParams } from 'react-router-dom';
function UserProfile() {
const { id } = useParams();
return <div>User ID: {id}</div>;
}
嵌套路由
<Route path="/dashboard" element={<Dashboard />}>
<Route path="stats" element={<Stats />} />
<Route path="settings" element={<Settings />} />
</Route>
// Dashboard组件中需要添加<Outlet />来渲染子路由
function Dashboard() {
return (
<div>
<h1>Dashboard</h1>
<Outlet />
</div>
);
}
编程式导航
import { useNavigate } from 'react-router-dom';
function LoginButton() {
const navigate = useNavigate();
return (
<button onClick={() => navigate('/dashboard')}>
Login
</button>
);
}
404页面处理
<Route path="*" element={<NotFound />} />
路由守卫 可以通过高阶组件或自定义包装组件实现:
function PrivateRoute({ children }) {
const isAuthenticated = checkAuth();
return isAuthenticated ? children : <Navigate to="/login" />;
}
// 使用方式
<Route path="/admin" element={<PrivateRoute><AdminPage /></PrivateRoute>} />
HashRouter替代方案 如果项目不支持HTML5 History API,可以使用HashRouter:
import { HashRouter as Router } from 'react-router-dom';
这些方法涵盖了React路由的主要使用场景,可以根据项目需求选择合适的配置方式。







