React+Hooks针对图片实现懒加载和预加载,性能优化

文章介绍了在React应用中实现图片懒加载和预加载的策略,以提升页面加载速度和用户体验。懒加载在图片进入可视区域时加载,预加载则在页面加载时预先下载图片。此外,提到了react-lazyload和react-image-preloader两个插件作为实现工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们的产品上线后,用户在访问网站时往往都希望页面能够快速响应,加载速度越快则用户的体验也就越好,反之则用户的满意度会下降,同时也会影响品牌形象

针对图片体积过大的问题,我们可以采用图片懒加载和预加载来进行优化。下面分别介绍几种实现方式,原生方法和使用插件实现,非常简单

图片懒加载:

图片懒加载是指在页面滚动到可见区域时再进行图片加载,而不是在一开始就加载所有的图片。这样可以减轻页面初次加载时的请求压力,提升页面加载速度。

代码如下:

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

const LazyLoadImage = ({ src, alt }) => {
  const [imageSrc, setImageSrc] = useState('');
  const imgRef = useRef(null);

  useEffect(() => {
    let observer;
    if (imgRef.current) {
      observer = new IntersectionObserver(
        ([entry]) => {
          // 当图片进入可视区域时,设置图片地址进行加载
          if (entry.isIntersecting) {
            setImageSrc(src);
            observer.unobserve(imgRef.current);
          }
        },
        {
          rootMargin: '0px 0px 200px 0px', // 可视区域的边距设置为200px
        }
      );
      observer.observe(imgRef.current);
    }
    return () => {
      if (observer && observer.unobserve) {
        observer.unobserve(imgRef.current);
      }
    };
  }, [src]);

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

export default LazyLoadImage;

然后在需要的模块下引入:

import LazyLoadImage from './components/LazyLoadImage';

const App = () => {
  return (
    <div>
      <LazyLoadImage src="图片路径/200/300" alt="lazy load image" />
    </div>
  );
};

图片预加载

图片预加载是指在页面加载时预先下载图片,这样用户在需要加载图片时就无需再进行网络请求。这样可以提升用户体验,减少页面加载时间

不多bb上代码:

import React, { useEffect } from 'react';

const PreloadImage = ({ src, alt }) => {
  useEffect(() => {
    const img = new Image();
    img.src = src;
  }, [src]);

  return <img src={src} alt={alt} />;
};

export default PreloadImage;

组件引用:

import PreloadImage from './components/PreloadImage';

const App = () => {
  return (
    <div>
      <PreloadImage src="图片路径/200/300" alt="preload image" />
    </div>
  );
};

以上就是采用图片懒加载和预加载来进行优化的代码实现。注意,在实际项目中可能需要对图片进行压缩、裁剪等处理,以进一步减小图片体积。

懒加载和预加载还有对应的插件可以实现

图片懒加载(react-lazyload插件

针对 React Hooks 项目的图片懒加载实现,可以使用 react-lazyload 插件。这个插件可以很方便地实现图片懒加载功能,只需要在图片标签上添加 data-src 属性即可,不多bb上码:

下载 "react-lazyload"   插件

import React from 'react';
import LazyLoad from 'react-lazyload';

function MyComponent() {
  return (
    <div>
      <LazyLoad>
        <img src="" data-src="图片路径" />
      </LazyLoad>
    </div>
  );
}

这就完了,是不是很简单哈哈哈

图片预加载(react-image-preloader)

先下载插件

import React from 'react';
import PreloadImage from 'react-image-preloader';

function MyComponent() {
  return (
    <div>
      <PreloadImage src="图片路径" />
    </div>
  );
}

以上就是前端项目对于大批量的图片加载的优化方案,前端的性能优化其实是一个很好的习惯,减少浪费的资源,降低维护成本,提升名次,优化开发流程,进一步增强了项目产品的竞争力,有需要的朋友可以试一试

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值