当前位置:首页 > React

react router如何使用

2026-02-26 06:39:58React

React Router 的基本使用

React Router 是 React 生态中用于处理路由的核心库,适用于构建单页应用(SPA)。以下是其核心功能和基本用法。

安装 React Router

通过 npm 或 yarn 安装最新版本的 react-router-dom(适用于 web 应用):

npm install react-router-dom

基础路由配置

使用 BrowserRouter 作为根组件包裹应用,并通过 RoutesRoute 定义路由规则:

import { BrowserRouter, Routes, Route } from "react-router-dom";
import Home from "./Home";
import About from "./About";

function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
      </Routes>
    </BrowserRouter>
  );
}

动态路由与参数

通过冒号(:)定义动态路径参数,使用 useParams 获取参数值:

<Route path="/users/:id" element={<UserDetail />} />

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

导航与链接

使用 Link 组件实现页面间跳转,避免浏览器默认刷新行为:

import { Link } from "react-router-dom";
function Navbar() {
  return (
    <nav>
      <Link to="/">Home</Link>
      <Link to="/about">About</Link>
    </nav>
  );
}

编程式导航

通过 useNavigate Hook 在代码中控制跳转:

import { useNavigate } from "react-router-dom";
function LoginButton() {
  const navigate = useNavigate();
  return (
    <button onClick={() => navigate("/dashboard")}>
      Login
    </button>
  );
}

嵌套路由

通过嵌套 Route 组件实现层级路由,配合 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({ children }) {
  const isAuthenticated = checkAuth(); // 自定义认证逻辑
  const navigate = useNavigate();

  if (!isAuthenticated) {
    navigate("/login");
    return null;
  }
  return children;
}

// 使用示例
<Route path="/admin" element={<PrivateRoute><AdminPage /></PrivateRoute>} />

404 页面处理

通过 path="*" 捕获未匹配的路由:

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

高级功能

路由懒加载

使用 React.lazySuspense 实现按需加载:

const About = React.lazy(() => import("./About"));
function App() {
  return (
    <Suspense fallback={<div>Loading...</div>}>
      <Route path="/about" element={<About />} />
    </Suspense>
  );
}

路由状态传递

通过 useLocation 获取路由状态(如 state 参数):

navigate("/profile", { state: { from: "/home" } });

// Profile 组件内
const location = useLocation();
console.log(location.state.from); // 输出 "/home"

路由钩子

常用 Hook 列表:

  • useParams:获取动态路由参数。
  • useNavigate:编程式导航。
  • useLocation:访问当前路由信息。
  • useSearchParams:处理 URL 查询参数。

注意事项

  1. 版本兼容性:React Router v6 与 v5 的 API 差异较大,需注意版本选择。
  2. 服务端渲染:如需 SSR,需配合 StaticRouter 或框架集成方案(如 Remix)。
  3. basename:若应用部署在子路径,可通过 <BrowserRouter basename="/subdir"> 配置。

以上内容覆盖了 React Router 的核心用法,可根据实际需求选择适合的功能组合。

react router如何使用

分享给朋友:

相关文章

react如何更新

react如何更新

更新 React 版本的方法 检查当前 React 版本 运行以下命令查看项目中安装的 React 版本: npm list react 更新 React 及相关依赖 通过 npm 或 yarn…

如何改造react

如何改造react

改造 React 项目的关键方法 分析当前项目结构 通过评估现有组件、状态管理和依赖项,明确需要改进的部分。使用工具如 webpack-bundle-analyzer 识别性能瓶颈。 升级 Rea…

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Contex…

react如何同步

react如何同步

React 同步状态管理方法 在 React 中实现同步状态管理,可以通过以下多种方式实现: 使用 useState 和 useEffect 钩子 通过 useState 定义状态,使用 useEf…

如何运行react

如何运行react

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

react如何调度

react如何调度

React 调度机制概述 React 的调度机制通过 Fiber 架构 和 Scheduler 模块实现任务优先级管理与时间切片(Time Slicing),确保高优先级更新(如用户交互)能快速响应,…