当前位置:首页 > React

react懒加载实现

2026-01-27 08:14:03React

使用 React.lazy 和 Suspense

React 提供了 React.lazySuspense 来实现组件的懒加载。React.lazy 允许动态导入组件,而 Suspense 用于在加载过程中显示回退内容。

import React, { Suspense } from 'react';

const LazyComponent = React.lazy(() => import('./LazyComponent'));

function App() {
  return (
    <div>
      <Suspense fallback={<div>Loading...</div>}>
        <LazyComponent />
      </Suspense>
    </div>
  );
}

结合路由懒加载

在 React Router 中,可以通过 React.lazy 实现路由级别的懒加载,优化页面加载性能。

react懒加载实现

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

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

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

自定义懒加载高阶组件

如果需要更灵活的懒加载逻辑,可以封装一个高阶组件(HOC)来实现。

import React, { useState, useEffect } from 'react';

function withLazyLoad(importComponent) {
  return function LazyLoadComponent(props) {
    const [Component, setComponent] = useState(null);

    useEffect(() => {
      importComponent().then((module) => {
        setComponent(() => module.default);
      });
    }, []);

    return Component ? <Component {...props} /> : <div>Loading...</div>;
  };
}

const LazyComponent = withLazyLoad(() => import('./LazyComponent'));

function App() {
  return <LazyComponent />;
}

动态导入与代码分割

通过动态导入(Dynamic Import)结合 Webpack 的代码分割功能,可以进一步优化懒加载的性能。

react懒加载实现

const loadComponent = () => import('./LazyComponent');

function App() {
  const [Component, setComponent] = useState(null);

  const handleClick = () => {
    loadComponent().then((module) => {
      setComponent(() => module.default);
    });
  };

  return (
    <div>
      <button onClick={handleClick}>Load Component</button>
      {Component && <Component />}
    </div>
  );
}

预加载懒加载组件

为了提高用户体验,可以在空闲时预加载懒加载组件。

import React, { Suspense } from 'react';

const LazyComponent = React.lazy(() => import('./LazyComponent'));

// 预加载组件
const preloadLazyComponent = () => {
  import('./LazyComponent');
};

function App() {
  return (
    <div>
      <button onClick={preloadLazyComponent}>Preload Component</button>
      <Suspense fallback={<div>Loading...</div>}>
        <LazyComponent />
      </Suspense>
    </div>
  );
}

注意事项

懒加载的组件必须导出为 default,否则会报错。动态导入的模块需要确保路径正确。

// LazyComponent.js 必须导出为 default
export default function LazyComponent() {
  return <div>Lazy Loaded Component</div>;
}

标签: 加载react
分享给朋友:

相关文章

react性能如何

react性能如何

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

如何配置react

如何配置react

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

如何安装react

如何安装react

安装React的方法 方法一:使用Create React App(官方推荐) Create React App是官方提供的脚手架工具,适合快速搭建React项目。确保已安装Node.js(建议版本≥…

typescript react 如何

typescript react 如何

TypeScript 与 React 结合使用的方法 在 React 项目中使用 TypeScript 可以提升代码的可维护性和类型安全性。以下是一些关键步骤和最佳实践: 安装 TypeScript…

react如何启动

react如何启动

启动 React 项目的步骤 确保已安装 Node.js React 需要 Node.js 环境运行,建议安装最新稳定版(LTS)。可通过以下命令检查是否已安装: node -v npm -v…

react如何配置

react如何配置

配置React项目的基本步骤 安装Node.js和npm 确保系统已安装Node.js(包含npm)。可通过命令行检查版本: node -v npm -v 创建React项目 使用官方工具Creat…