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