导读:本期聚焦于小伙伴创作的《JS如何实现懒加载组件?React.lazy的使用方法是什么》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《JS如何实现懒加载组件?React.lazy的使用方法是什么》有用,将其分享出去将是对创作者最好的鼓励。

在React项目开发中,当项目体积逐渐增大,首屏需要加载的组件资源过多时,很容易出现首屏加载缓慢的问题。此时可以通过懒加载的方式,让组件在需要渲染的时候才去加载对应的资源,减少首屏的资源请求量。React官方提供了React.lazy API来实现组件的懒加载,配合Suspense组件可以很方便地完成相关功能。

JS如何实现懒加载组件?React.lazy的使用方法是什么

React.lazy的基本使用

React.lazy接受一个函数作为参数,这个函数需要动态调用import()来引入组件,返回的是一个Promise,当组件需要渲染时才会执行这个动态引入的逻辑。引入的组件需要配合Suspense组件使用,Suspense可以在组件加载过程中展示 fallback 指定的加载占位内容。

下面是一个最简单的使用示例,我们创建一个需要懒加载的About组件,在路由切换到对应页面时才加载该组件:

// 懒加载About组件
const About = React.lazy(() => import('./components/About'));

function App() {
  return (
    <div className="app">
      <h1>首页</h1>
      {/* Suspense包裹懒加载组件,加载时展示fallback内容 */}
      <React.Suspense fallback={<div>组件加载中...</div>}>
        <About />
      </React.Suspense>
    </div>
  );
}

export default App;

React.lazy结合路由实现懒加载

在实际项目中,组件懒加载最常和路由结合使用,让不同路由对应的页面组件在切换路由时才加载,大幅减少首屏需要加载的页面资源。下面是结合react-router-dom的实现示例:

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

// 懒加载各个页面组件
const Home = React.lazy(() => import('./pages/Home'));
const List = React.lazy(() => import('./pages/List'));
const Detail = React.lazy(() => import('./pages/Detail'));

function App() {
  return (
    <Router>
      <Suspense fallback={<div>页面加载中...</div>}>
        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/list" element={<List />} />
          <Route path="/detail/:id" element={<Detail />} />
        </Routes>
      </Suspense>
    </Router>
  );
}

export default App;

React.lazy的注意事项

  • React.lazy目前只支持默认导出的组件,如果组件是命名导出,需要先转换成默认导出再使用。比如组件是export const MyComponent,需要在引入的文件中做一层转换:export { default as MyComponent } from './MyComponent',再使用React.lazy引入。
  • Suspense组件只能用于包裹React.lazy引入的组件,不能用于包裹普通的组件,否则会报错。
  • fallback属性接收的是一个React元素,可以是加载动画、文字提示等任意合法的React渲染内容,不能是字符串或者数字。
  • React.lazy是基于动态import()实现的,动态import()是ES6的特性,如果需要兼容旧版浏览器,需要配置对应的babel插件或者polyfill。

其他JS实现组件懒加载的方式

如果不是React项目,也可以通过原生的JS实现组件的懒加载。核心思路是通过动态创建<script>标签,在需要加载组件的时候插入标签加载对应的JS文件,加载完成后执行组件的渲染逻辑。下面是一个简单的原生实现示例:

// 组件加载函数
function loadComponent(url, callback) {
  const script = document.createElement('script');
  script.src = url;
  script.onload = () => {
    // 假设组件加载后会在window上挂载对应的组件构造函数
    callback(window.LoadedComponent);
  };
  document.body.appendChild(script);
}

// 使用方式
const loadBtn = document.getElementById('loadBtn');
loadBtn.addEventListener('click', () => {
  loadComponent('http://ipipp.com/components/component.js', (Component) => {
    const container = document.getElementById('container');
    new Component(container);
  });
});

总结

React.lazy是React官方提供的组件懒加载方案,使用简单且和React生态结合紧密,是React项目实现组件懒加载的首选方案。如果是其他框架或者原生JS项目,也可以通过动态加载资源的思路实现类似的懒加载效果。合理使用组件懒加载可以有效减少首屏加载的资源体积,提升用户体验,是前端性能优化的重要手段之一。

React_lazyJS懒加载组件懒加载Suspense修改时间:2026-06-28 03:51:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。