当前位置:首页 > React

react 实现router

2026-01-26 15:19:48React

如何在 React 中实现路由

React 本身不提供内置的路由功能,但可以通过第三方库 react-router-dom 实现。以下是具体实现方法:

安装 react-router-dom

确保项目已初始化并安装 React,然后通过 npm 或 yarn 安装 react-router-dom

npm install react-router-dom
# 或
yarn add react-router-dom

基本路由配置

在项目的入口文件(如 App.js)中配置路由。以下是一个基础示例:

import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
import Home from './components/Home';
import About from './components/About';
import Contact from './components/Contact';

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

export default App;

导航链接

使用 Link 组件实现页面间的导航,避免页面刷新:

import { Link } from 'react-router-dom';

function Navbar() {
  return (
    <nav>
      <Link to="/">Home</Link>
      <Link to="/about">About</Link>
      <Link to="/contact">Contact</Link>
    </nav>
  );
}

动态路由与参数传递

通过 useParams 获取动态路由参数:

import { Route, Routes } from 'react-router-dom';
import UserProfile from './components/UserProfile';

function App() {
  return (
    <Routes>
      <Route path="/user/:id" element={<UserProfile />} />
    </Routes>
  );
}

// UserProfile 组件中获取参数
import { useParams } from 'react-router-dom';

function UserProfile() {
  const { id } = useParams();
  return <div>User ID: {id}</div>;
}

嵌套路由

嵌套路由可用于布局复杂的页面结构:

<Routes>
  <Route path="/dashboard" element={<Dashboard />}>
    <Route path="profile" element={<Profile />} />
    <Route path="settings" element={<Settings />} />
  </Route>
</Routes>

在父路由组件中使用 Outlet 渲染子路由:

import { Outlet } from 'react-router-dom';

function Dashboard() {
  return (
    <div>
      <h1>Dashboard</h1>
      <Outlet /> {/* 子路由在此渲染 */}
    </div>
  );
}

编程式导航

通过 useNavigate 实现编程式跳转:

import { useNavigate } from 'react-router-dom';

function LoginButton() {
  const navigate = useNavigate();
  return (
    <button onClick={() => navigate('/dashboard')}>
      Login
    </button>
  );
}

路由守卫

通过封装路由组件实现权限控制:

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

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

注意事项

  • 使用 BrowserRouter 需要服务器支持(如配置重定向规则)。
  • 静态站点可使用 HashRouter 避免服务器配置问题。
  • 动态导入(懒加载)路由组件可优化性能:
    const About = lazy(() => import('./components/About'));
    <Suspense fallback={<div>Loading...</div>}>
      <Route path="/about" element={<About />} />
    </Suspense>

react 实现router

标签: reactrouter
分享给朋友:

相关文章

elementui router

elementui router

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

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实…

react性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…

react如何衰减

react如何衰减

React 中的动画衰减效果实现 在 React 中实现衰减效果(如滚动衰减、拖动释放后的惯性滑动)通常需要结合物理动画原理或第三方动画库。以下是几种常见方法: 使用 CSS 动画和 @keyf…

react如何部署

react如何部署

部署 React 应用的常见方法 使用静态服务器部署 React 应用在构建后会生成静态文件,可以直接通过静态服务器部署。常用的静态服务器包括 Nginx、Apache 等。 运行构建命令生成静态…

react如何读

react如何读

React 的发音 React 的发音为 /riˈækt/(音标),读作“瑞-艾克特”。其中: “Re” 发音类似英文单词 “read” 的开头部分。 “act” 发音与英文单词 “act” 一致。…