当前位置:首页 > 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 应用在构建后会生成静态文件,可以直接通过静态服务器部署。常用的静态服务器包括 Nginx、Apache 等。 运行构建命令生成静态文…

react如何开发

react如何开发

React 开发基础步骤 安装 Node.js 和 npm/yarn 确保系统已安装 Node.js(包含 npm)或 Yarn。React 项目依赖这些工具管理包和运行脚本。官方推荐使用 Node.…

如何运行react

如何运行react

运行 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过官网 Node.js 下载并安装最新稳定版本。安装完成后,验证版本: node…

react 如何精通

react 如何精通

掌握核心概念 深入理解React的基础概念,包括组件(函数组件与类组件)、状态(useState)、生命周期(useEffect)、Props传递、虚拟DOM与Diff算法。通过官方文档或《React…

react如何实现混入

react如何实现混入

在React中实现混入(Mixin)功能可以通过以下几种方式实现,React官方已不推荐使用传统的React.createClass混入方式,但可通过高阶组件或自定义Hook替代。 高阶组件(HOC…

react如何筛选数据

react如何筛选数据

筛选数据的方法 在React中筛选数据通常涉及对数组的操作,结合状态管理和渲染逻辑。以下是几种常见的实现方式: 使用数组的filter方法 通过JavaScript数组的filter方法筛选数据,并…