当前位置:首页 > React

react router实现

2026-01-26 12:51:56React

React Router 实现

React Router 是 React 应用中用于实现客户端路由的核心库,支持动态路由匹配、导航和组件渲染。以下是其核心实现方法和步骤。

安装 React Router

使用 npm 或 yarn 安装最新版本的 React Router(以 v6 为例):

npm install react-router-dom

基本路由配置

在根组件(如 App.js)中通过 BrowserRouter 包裹应用,并定义路由规则:

import { BrowserRouter, Routes, Route } from "react-router-dom";

function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<HomePage />} />
        <Route path="/about" element={<AboutPage />} />
      </Routes>
    </BrowserRouter>
  );
}
  • BrowserRouter:基于 HTML5 History API 的路由容器。
  • RoutesRoute:定义路径与组件的映射关系。

动态路由与参数

通过 :param 语法实现动态路由,并在组件中通过 useParams 获取参数:

react router实现

<Route path="/user/:id" element={<UserProfile />} />

// 在 UserProfile 组件中
import { useParams } from "react-router-dom";
function UserProfile() {
  const { id } = useParams();
  return <div>User ID: {id}</div>;
}

嵌套路由

通过 <Outlet> 实现嵌套路由的组件渲染:

<Route path="/dashboard" element={<DashboardLayout />}>
  <Route path="stats" element={<StatsPage />} />
  <Route path="settings" element={<SettingsPage />} />
</Route>

// DashboardLayout 组件中需包含 Outlet
function DashboardLayout() {
  return (
    <div>
      <Sidebar />
      <Outlet /> {/* 嵌套路由组件在此渲染 */}
    </div>
  );
}

导航与链接

使用 LinkuseNavigate 实现导航:

react router实现

import { Link, useNavigate } from "react-router-dom";

function NavBar() {
  const navigate = useNavigate();
  return (
    <nav>
      <Link to="/">Home</Link>
      <button onClick={() => navigate("/about")}>About</button>
    </nav>
  );
}
  • Link:生成无刷新跳转的链接。
  • useNavigate:编程式导航(如跳转、重定向)。

路由守卫与鉴权

通过自定义封装实现路由鉴权:

function PrivateRoute({ children }) {
  const isAuthenticated = checkAuth(); // 自定义鉴权逻辑
  return isAuthenticated ? children : <Navigate to="/login" />;
}

// 使用方式
<Route path="/admin" element={<PrivateRoute><AdminPage /></PrivateRoute>} />

404 路由处理

未匹配路径时渲染 404 页面:

<Route path="*" element={<NotFoundPage />} />

代码分割与懒加载

结合 React.lazySuspense 实现按需加载:

const AboutPage = React.lazy(() => import("./AboutPage"));

<Route 
  path="/about" 
  element={
    <Suspense fallback={<LoadingSpinner />}>
      <AboutPage />
    </Suspense>
  } 
/>

注意事项

  1. 路由版本:React Router v6 与 v5 语法差异较大,需注意 API 变更。
  2. HashRouter:若需兼容无服务器配置的静态部署,可用 HashRouter 替代 BrowserRouter
  3. 状态管理:导航时可通过 state 传递数据:
    navigate("/user", { state: { fromHome: true } });

标签: reactrouter
分享给朋友:

相关文章

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 进行组件记忆 React.memo 是一个高阶组件,用于缓存函数组件的渲染结果,避免不必要的重新渲染。只有当组件的 props 发生变化时,才…

react 如何引入jquery

react 如何引入jquery

引入 jQuery 到 React 项目 在 React 项目中引入 jQuery 可以通过多种方式实现,但需要注意 React 和 jQuery 操作 DOM 的方式可能冲突,因此建议仅在必要时使用…

elementui router

elementui router

Element UI 结合 Vue Router 的使用方法 Element UI 是一个基于 Vue.js 的组件库,而 Vue Router 是 Vue.js 的官方路由管理器。将两者结合使用可以…

react如何销毁

react如何销毁

React 组件销毁的机制 在 React 中,组件的销毁通常由 React 的生命周期管理。当组件从 DOM 中移除时,React 会自动触发销毁相关的生命周期方法。以下是关键点: 组件的销毁通…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…

如何记忆react

如何记忆react

理解核心概念 React的核心概念包括组件、状态(state)、属性(props)、生命周期方法(类组件)和钩子(函数组件)。掌握这些基础概念是记忆React的关键。组件是React应用的构建块,分为…