react如何设置路由
在React中设置路由通常使用react-router-dom库,以下是具体实现方法:
安装react-router-dom
通过npm或yarn安装最新版本的react-router-dom:
npm install react-router-dom
# 或
yarn add react-router-dom
基本路由配置
在入口文件(如App.js)中引入组件并配置路由:
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Home from './components/Home';
import About from './components/About';
function App() {
return (
<Router>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</Router>
);
}
动态路由与参数传递
通过冒号(:)定义动态参数,组件内通过useParams获取:
<Route path="/user/:id" element={<UserProfile />} />
// UserProfile组件内获取参数
import { useParams } from 'react-router-dom';
function UserProfile() {
const { id } = useParams();
return <div>User ID: {id}</div>;
}
导航跳转
使用Link组件或useNavigate钩子实现页面跳转:
// Link方式
import { Link } from 'react-router-dom';
<Link to="/about">关于我们</Link>
// 编程式导航
import { useNavigate } from 'react-router-dom';
function MyComponent() {
const navigate = useNavigate();
return <button onClick={() => navigate('/contact')}>跳转</button>;
}
嵌套路由
通过<Outlet>实现嵌套路由的占位渲染:
// 父路由配置
<Route path="/dashboard" element={<Dashboard />}>
<Route path="settings" element={<Settings />} />
</Route>
// Dashboard组件内需包含Outlet
import { Outlet } from 'react-router-dom';
function Dashboard() {
return (
<div>
<h1>Dashboard</h1>
<Outlet /> {/* 子路由内容将在此渲染 */}
</div>
);
}
路由守卫(权限控制)
通过自定义封装实现路由拦截:
function PrivateRoute({ element }) {
const isAuthenticated = checkAuth(); // 自定义鉴权逻辑
return isAuthenticated ? element : <Navigate to="/login" />;
}
// 使用方式
<Route path="/admin" element={<PrivateRoute element={<AdminPage />} />} />
404页面处理
在路由列表末尾添加通配符路径:
<Route path="*" element={<NotFoundPage />} />
注意事项
react-router-domv6及以上版本使用Routes替代旧版的Switch。- 动态路由参数需通过
useParams获取,而非旧版的props.match.params。 - 嵌套路由必须配合
<Outlet>组件使用。







