当前位置:首页 > React

react如何实现路由懒加载

2026-01-25 02:50:23React

React 路由懒加载的实现方法

路由懒加载(Lazy Loading)通过动态导入(Dynamic Import)和 React 的 Suspense 组件实现,能有效减少初始加载时的资源体积。以下是具体实现方式:

使用 React.lazySuspense

React.lazy 允许动态导入组件,Suspense 提供加载中的占位内容:

react如何实现路由懒加载

import { Suspense, lazy } from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';

const Home = lazy(() => import('./components/Home'));
const About = lazy(() => import('./components/About'));

function App() {
  return (
    <Router>
      <Suspense fallback={<div>Loading...</div>}>
        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/about" element={<About />} />
        </Routes>
      </Suspense>
    </Router>
  );
}

动态导入的命名导出组件

若需懒加载命名导出的组件,需通过 then 链式调用:

react如何实现路由懒加载

const Settings = lazy(() => 
  import('./components/Settings').then(module => ({
    default: module.SettingsPanel
  }))
);

预加载优化

在用户可能访问的路由前触发预加载:

const About = lazy(() => import('./components/About'));

// 鼠标悬停导航链接时预加载
<Link 
  to="/about" 
  onMouseEnter={() => import('./components/About')}
>
  About
</Link>

错误边界处理

结合 ErrorBoundary 捕获懒加载失败:

class ErrorBoundary extends React.Component {
  state = { hasError: false };
  static getDerivedStateFromError() {
    return { hasError: true };
  }
  render() {
    return this.state.hasError ? <h1>Load failed</h1> : this.props.children;
  }
}

// 使用方式
<ErrorBoundary>
  <Suspense fallback={<Spinner />}>
    <LazyComponent />
  </Suspense>
</ErrorBoundary>

注意事项

  • 动态导入路径需为字符串字面量,不可使用变量。
  • Suspensefallback 需提供适当加载状态。
  • 生产环境下需确保打包工具(如 Webpack)支持代码分割。

分享给朋友:

相关文章

vue如何实现tap

vue如何实现tap

实现Tap事件的方法 在Vue中实现类似移动端的tap事件(轻触)可以通过以下几种方式完成。原生移动端浏览器通常通过touchstart和touchend事件组合模拟tap,而Vue中可以封装自定义指…

vue实现前端路由

vue实现前端路由

Vue 实现前端路由的方法 Vue 可以通过 Vue Router 实现前端路由管理。以下是具体实现步骤: 安装 Vue Router 通过 npm 或 yarn 安装 Vue Router: n…

vue实现路由守卫

vue实现路由守卫

路由守卫的基本概念 路由守卫是 Vue Router 提供的一种机制,用于在路由跳转前后执行特定的逻辑。通过路由守卫,可以实现权限控制、页面访问限制、数据预加载等功能。 全局前置守卫 使用 rout…

vue如何实现分离

vue如何实现分离

Vue 实现组件分离的方法 Vue 可以通过多种方式实现组件分离,提升代码的可维护性和复用性。以下是几种常见的方法: 单文件组件 (SFC) Vue 的单文件组件(.vue 文件)将模板、脚本和样式…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Paren…

php 路由实现

php 路由实现

PHP 路由实现方法 在 PHP 中实现路由功能有多种方式,以下是几种常见的实现方法: 使用原生 PHP 实现 通过解析 URL 并匹配对应的控制器和动作: $request = $_SERV…