react如何定义路由
React 路由定义方法
在 React 中定义路由通常使用 react-router-dom 库,以下是几种常见的路由定义方式:
使用 BrowserRouter 和 Route
安装 react-router-dom:
npm install react-router-dom
在应用中定义路由:
import { BrowserRouter as Router, Route, Routes } 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>
);
}
嵌套路由定义
可以定义嵌套路由来创建层次结构:
<Routes>
<Route path="/" element={<Layout />}>
<Route index element={<Home />} />
<Route path="about" element={<About />} />
<Route path="contact" element={<Contact />} />
</Route>
</Routes>
动态路由参数
使用冒号 : 定义动态路由参数:
<Route path="/users/:userId" element={<UserProfile />} />
在组件中获取参数:
import { useParams } from 'react-router-dom';
function UserProfile() {
const { userId } = useParams();
return <div>User ID: {userId}</div>;
}
404 路由处理
定义未匹配路由的默认页面:
<Routes>
<Route path="/" element={<Home />} />
<Route path="*" element={<NotFound />} />
</Routes>
编程式导航
使用 useNavigate 进行编程式导航:
import { useNavigate } from 'react-router-dom';
function MyComponent() {
const navigate = useNavigate();
const handleClick = () => {
navigate('/about');
};
return <button onClick={handleClick}>Go to About</button>;
}
路由守卫
通过包装组件实现路由守卫:
function PrivateRoute({ element: Element, ...rest }) {
const isAuthenticated = /* 验证逻辑 */;
return isAuthenticated ? <Element {...rest} /> : <Navigate to="/login" />;
}
// 使用方式
<Route path="/dashboard" element={<PrivateRoute element={Dashboard} />} />
路由懒加载
使用 React.lazy 和 Suspense 实现懒加载:
const About = React.lazy(() => import('./components/About'));
function App() {
return (
<Suspense fallback={<div>Loading...</div>}>
<Routes>
<Route path="/about" element={<About />} />
</Routes>
</Suspense>
);
}
以上方法涵盖了 React 路由的主要使用场景,可根据实际需求选择合适的方式。







