当前位置:首页 > React

react实现lazyload

2026-01-26 13:02:39React

React 实现 LazyLoad

使用 React.lazySuspense 实现组件懒加载
React.lazy 是 React 官方提供的懒加载组件的方法,结合 Suspense 可以优雅地处理加载状态。

import React, { Suspense } from 'react';

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

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

fallback 用于在组件加载时显示占位内容。

图片懒加载(Intersection Observer API)
通过 Intersection Observer 监听图片是否进入视口,动态加载资源。

react实现lazyload

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

const LazyImage = ({ src, alt }) => {
  const imgRef = useRef();

  useEffect(() => {
    const observer = new IntersectionObserver((entries) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) {
          const img = entry.target;
          img.src = src;
          observer.unobserve(img);
        }
      });
    });

    observer.observe(imgRef.current);
    return () => observer.disconnect();
  }, [src]);

  return <img ref={imgRef} alt={alt} />;
};

// 使用示例
<LazyImage src="image-url.jpg" alt="Lazy-loaded image" />

第三方库实现(react-lazyload)
react-lazyload 是一个流行的懒加载库,支持组件和图片的懒加载。
安装:

npm install react-lazyload

使用示例:

react实现lazyload

import LazyLoad from 'react-lazyload';

function App() {
  return (
    <LazyLoad height={200} offset={100}>
      <img src="image.jpg" alt="Lazy-loaded" />
    </LazyLoad>
  );
}

offset 控制提前加载的像素范围,height 设置占位高度。

路由懒加载(React Router)
结合 React.lazy 实现路由级别的懒加载:

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

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

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

注意事项

  • 懒加载的组件必须导出为 default
  • 生产环境下需确保打包工具(如 Webpack)支持代码分割。
  • 图片懒加载时,建议使用占位图或骨架屏优化用户体验。

标签: reactlazyload
分享给朋友:

相关文章

react 如何引入css

react 如何引入css

在 React 中引入 CSS 的方法 React 提供了多种引入 CSS 的方式,可以根据项目需求选择合适的方法。以下是常见的几种方式: 内联样式 内联样式直接在组件中通过 style 属性定义…

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gr…

react如何更新

react如何更新

更新 React 版本的方法 检查当前 React 版本 运行以下命令查看项目中安装的 React 版本: npm list react 更新 React 及相关依赖 通过 npm 或 yarn…

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Contex…

react如何部署

react如何部署

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

react如何遍历

react如何遍历

遍历数组或对象的方法 在React中,遍历数组或对象通常用于渲染列表或动态生成内容。以下是几种常见的遍历方法: 使用map遍历数组map是遍历数组并返回新数组的高阶函数,适合渲染列表。…