react實現(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)。可以利用它手動實現(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 圖片懶加載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
ReactHook使用useState更新變量后,如何拿到變量更新后的值
這篇文章主要介紹了ReactHook使用useState更新變量后,如何拿到變量更新后的值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
淺談redux以及react-redux簡單實現(xiàn)
這篇文章主要介紹了淺談redux以及react-redux簡單實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
React從react-router路由上做登陸驗證控制的方法
本篇文章主要介紹了React從react-router路由上做登陸驗證控制的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05

