最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

react實(shí)現(xiàn)圖片懶加載的三種方式

 更新時(shí)間:2025年03月10日 09:26:45   作者:前段技術(shù)人  
本文主要介紹了react實(shí)現(xiàn)圖片懶加載的三種方式,包括利用瀏覽器原生的loading="lazy"屬性,使用react-lazyload庫(kù)以及通過(guò)IntersectionObserver API手動(dòng)實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下

在 React 中實(shí)現(xiàn)圖片懶加載可以提升頁(yè)面的性能,特別是在有大量圖片的頁(yè)面中,能避免一次性加載所有圖片導(dǎo)致的性能問(wèn)題。以下為你介紹幾種常見(jiàn)的實(shí)現(xiàn)方式:

1. 使用 HTML 的 loading="lazy" 屬性

現(xiàn)代瀏覽器原生支持圖片的懶加載,通過(guò)給 <img> 標(biāo)簽添加 loading="lazy" 屬性即可實(shí)現(xiàn)。

import React from 'react';

const LazyImage = () => {
    return (
        <img
            src="https://example.com/image.jpg"
            alt="Lazy loaded image"
            loading="lazy"
        />
    );
};

export default LazyImage;

優(yōu)點(diǎn)

  • 簡(jiǎn)單易用,無(wú)需額外的庫(kù)。
  • 瀏覽器原生支持,兼容性較好。

缺點(diǎn)

  • 對(duì)于舊版本的瀏覽器可能不支持。

2. 使用 react-lazyload 庫(kù)

react-lazyload 是一個(gè)常用的 React 懶加載庫(kù),它可以幫助你輕松實(shí)現(xiàn)圖片懶加載。

npm install react-lazyload

使用示例

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

const LazyImage = () => {
    return (
        <LazyLoad>
            <img
                src="https://example.com/image.jpg"
                alt="Lazy loaded image"
            />
        </LazyLoad>
    );
};

export default LazyImage;

自定義配置

react-lazyload 提供了一些配置選項(xiàng),例如 threshold(觸發(fā)加載的閾值)、placeholder(加載前的占位符)等。

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

const LazyImage = () => {
    return (
        <LazyLoad
            threshold={200}
            placeholder={<div>Loading...</div>}
        >
            <img
                src="https://example.com/image.jpg"
                alt="Lazy loaded image"
            />
        </LazyLoad>
    );
};

export default LazyImage;

優(yōu)點(diǎn)

  • 功能豐富,提供了多種配置選項(xiàng)。
  • 兼容性好,支持舊版本的瀏覽器。

缺點(diǎn)

  • 需要引入額外的庫(kù),增加了項(xiàng)目的體積。

3. 使用 IntersectionObserver API 手動(dòng)實(shí)現(xiàn)

IntersectionObserver 是一個(gè)原生的 JavaScript API,用于觀察目標(biāo)元素與視口的交叉狀態(tài)??梢岳盟謩?dòng)實(shí)現(xiàn)圖片懶加載。

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

const LazyImage = () => {
    const imgRef = useRef(null);

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

        if (imgRef.current) {
            observer.observe(imgRef.current);
        }

        return () => {
            if (imgRef.current) {
                observer.unobserve(imgRef.current);
            }
        };
    }, []);

    return (
        <img
            ref={imgRef}
            data-src="https://example.com/image.jpg"
            alt="Lazy loaded image"
            src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
        />
    );
};

export default LazyImage;

優(yōu)點(diǎn)

  • 無(wú)需引入額外的庫(kù),減少項(xiàng)目體積。
  • 可以根據(jù)需求進(jìn)行自定義。

缺點(diǎn)

  • 代碼實(shí)現(xiàn)相對(duì)復(fù)雜。
  • 對(duì)于舊版本的瀏覽器可能需要使用 polyfill。

到此這篇關(guān)于react實(shí)現(xiàn)圖片懶加載的三種方式的文章就介紹到這了,更多相關(guān)react 圖片懶加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • React如何使用create-react-app創(chuàng)建react項(xiàng)目

    React如何使用create-react-app創(chuàng)建react項(xiàng)目

    這篇文章主要介紹了React如何使用create-react-app創(chuàng)建react項(xiàng)目問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React插槽使用方法

    React插槽使用方法

    本文主要介紹了React插槽使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 關(guān)于antd tree和父子組件之間的傳值問(wèn)題(react 總結(jié))

    關(guān)于antd tree和父子組件之間的傳值問(wèn)題(react 總結(jié))

    這篇文章主要介紹了關(guān)于antd tree 和父子組件之間的傳值問(wèn)題,是小編給大家總結(jié)的一些react知識(shí)點(diǎn),本文通過(guò)一個(gè)項(xiàng)目需求實(shí)例代碼詳解給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-06-06
  • 淺談React碰到v-if

    淺談React碰到v-if

    這篇文章主要介紹了淺談React碰到v-if,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • 深入解析React?Hooks?閉包陷阱

    深入解析React?Hooks?閉包陷阱

    這篇文章主要為大家介紹了React Hooks閉包陷阱的深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 用React實(shí)現(xiàn)一個(gè)完整的TodoList的示例代碼

    用React實(shí)現(xiàn)一個(gè)完整的TodoList的示例代碼

    本篇文章主要介紹了用React實(shí)現(xiàn)一個(gè)完整的TodoList的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 深入理解React高階組件

    深入理解React高階組件

    本篇文章主要介紹了深入理解React高階組件,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • React?狀態(tài)管理中的Jotai詳解

    React?狀態(tài)管理中的Jotai詳解

    Jotai是一個(gè)簡(jiǎn)單、靈活、高效的React狀態(tài)管理庫(kù),通過(guò)原子和派生狀態(tài)的設(shè)計(jì),使得狀態(tài)管理變得直觀和高效,它適用于小型應(yīng)用、組件庫(kù)和大型項(xiàng)目的局部狀態(tài)管理,且與TypeScript兼容,Jotai的社區(qū)正在壯大,提供了豐富的資源和支持,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • React實(shí)現(xiàn)組件間通信的幾種方式小結(jié)

    React實(shí)現(xiàn)組件間通信的幾種方式小結(jié)

    在React應(yīng)用中,組件間的通信是一個(gè)基礎(chǔ)而關(guān)鍵的概念,理解和掌握不同組件之間的通信方式,可以幫助我們構(gòu)建出更加模塊化、可維護(hù)和可擴(kuò)展的應(yīng)用程序,React提供了多種組件通信的方法,本文給大家詳細(xì)的介紹了這些方法,需要的朋友可以參考下
    2024-07-07
  • React如何配置src根目錄@

    React如何配置src根目錄@

    這篇文章主要介紹了React如何配置src根目錄@,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01

最新評(píng)論

多伦县| 临海市| 平顶山市| 漳浦县| 安阳市| 蕲春县| 舒城县| 海盐县| 温州市| 天水市| 桃江县| 温宿县| 龙游县| 抚远县| 长白| 汾阳市| 丽水市| 泰州市| 合川市| 纳雍县| 巫山县| 滨海县| 精河县| 久治县| 施秉县| 曲阳县| 夏津县| 深水埗区| 民和| 孟津县| 绍兴市| 滨州市| 民勤县| 饶河县| 松桃| 勐海县| 宿迁市| 贵港市| 微山县| 化州市| 平陆县|