欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

現(xiàn)代瀏覽器原生支持圖片的懶加載,通過給 <img> 標簽添加 loading="lazy" 屬性即可實現(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)點

  • 簡單易用,無需額外的庫。
  • 瀏覽器原生支持,兼容性較好。

缺點

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

2. 使用 react-lazyload 庫

react-lazyload 是一個常用的 React 懶加載庫,它可以幫助你輕松實現(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 提供了一些配置選項,例如 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)點

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

缺點

  • 需要引入額外的庫,增加了項目的體積。

3. 使用 IntersectionObserver API 手動實現(xiàn)

IntersectionObserver 是一個原生的 JavaScript API,用于觀察目標元素與視口的交叉狀態(tài)??梢岳盟謩訉崿F(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)點

  • 無需引入額外的庫,減少項目體積。
  • 可以根據(jù)需求進行自定義。

缺點

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

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

相關文章

  • React Form組件的實現(xiàn)封裝雜談

    React Form組件的實現(xiàn)封裝雜談

    這篇文章主要介紹了React Form組件的實現(xiàn)封裝雜談,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • ReactHook使用useState更新變量后,如何拿到變量更新后的值

    ReactHook使用useState更新變量后,如何拿到變量更新后的值

    這篇文章主要介紹了ReactHook使用useState更新變量后,如何拿到變量更新后的值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Ant?Design?組件庫之步驟條實現(xiàn)

    Ant?Design?組件庫之步驟條實現(xiàn)

    這篇文章主要為大家介紹了Ant?Design組件庫之步驟條實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 詳解React Native頂|底部導航使用小技巧

    詳解React Native頂|底部導航使用小技巧

    本篇文章主要介紹了詳解React Native頂|底部導航使用小技巧 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • react?redux的原理以及基礎使用講解

    react?redux的原理以及基礎使用講解

    這篇文章主要介紹了react?redux的原理以及基礎使用講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • React深入分析更新的創(chuàng)建源碼

    React深入分析更新的創(chuàng)建源碼

    React組件分為函數(shù)組件與class組件;函數(shù)組件是無狀態(tài)組件,class稱為類組件;函數(shù)組件只有props,沒有自己的私有數(shù)據(jù)和生命周期函數(shù);class組件有自己私有數(shù)據(jù)(this.state)和生命周期函數(shù)
    2023-01-01
  • 淺談redux以及react-redux簡單實現(xiàn)

    淺談redux以及react-redux簡單實現(xiàn)

    這篇文章主要介紹了淺談redux以及react-redux簡單實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • React虛擬渲染實現(xiàn)50個或者一百個圖表渲染

    React虛擬渲染實現(xiàn)50個或者一百個圖表渲染

    這篇文章主要為大家介紹了React虛擬渲染實現(xiàn)50個或者100個圖表渲染的實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • React從react-router路由上做登陸驗證控制的方法

    React從react-router路由上做登陸驗證控制的方法

    本篇文章主要介紹了React從react-router路由上做登陸驗證控制的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • react四種組件中DOM樣式設置方式詳解

    react四種組件中DOM樣式設置方式詳解

    這篇文章主要介紹了react之四種組件中DOM樣式設置方式,通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10

最新評論