当前位置:首页 > 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 native

如何评价react native

React Native 的优势 跨平台开发效率高 React Native 允许开发者使用 JavaScript 和 React 编写代码,同时生成 iOS 和 Android 应用,大幅减少开发成…

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取日期 在 React 项目中,可以通过 Moment.js 库轻松处理日期和时间。以下是几种常见的日期获取方法。 安装 Moment.js 确保项目中已安装 Mome…

如何学react

如何学react

学习 React 的基础知识 React 是一个用于构建用户界面的 JavaScript 库。学习 React 的第一步是掌握其核心概念,包括组件、状态(State)、属性(Props)和生命周期方法…

vue实现预加载

vue实现预加载

Vue 实现预加载的方法 预加载可以显著提升用户体验,减少页面切换时的等待时间。以下是几种在 Vue 中实现预加载的常见方法: 使用 preload 或 prefetch 标签 在构建工具(如 W…

如何降低react版本

如何降低react版本

降低 React 项目版本的步骤 检查当前 React 版本 运行以下命令查看项目中安装的 React 当前版本: npm list react 或 yarn list react 修改…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…