资源懒加载

对图像进行懒加载,只有当监听节点进入可视窗口内时,才开始加载,达到节省资源的效果。
主要通过Web API(IntersectionObserver)实现。
主要思路:

1、初始资源置为空,不展示;
2、创建一个可监听节点interRef;
3、若interRef进入指定区域内,则给图像赋值,开始加载资源;

import { useRef } from 'react'
import { useIntersection } from 'react-use'

function Demo() {
const [imgSrc, setImgSrc] = useState('') // 图像资源地址
const interRef = useRef() // 绑定监听节点

useEffect(() => {
    if (intersection && intersection.isIntersecting) { // 监听节点进入可视区
    setImgSrc(xxx) // 图像地址赋值为实际地址
    }
}, [intersection])

const intersection = useIntersection(interRef, {
    root: null, // 指定根元素(目标元素的父元素),未指定则默认浏览器视窗
    rootMargin: '0px', // 根元素的外边距,类似于css的margin属性"top right bottom left"
    threshold: 1, // target和root相交程度达到该值时触发回调,1表示targe完全出现在root中时才会回调
})
return <div>
    <div ref={interRef}></div>
    {imgSrc && <img src={imgSrc} alt='' />}
</div>
}

Intersection Observer 完全解读

IntersectionObserver

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 懒加载 通过图片懒加载可以让一些不可视的图片不去加载,避免一次性加载过多的图片导致请求阻塞(浏览器一般对同一域名下...
    依然还是或者其他阅读 1,761评论 0 0
  • 定义自定义指令js 原理就是一开始不给src附图片地址的值,等到进入指定区域再给它赋值。 这里用到了一个接口I...
    沃德麻鸭阅读 4,529评论 0 1
  • 一、图片懒加载原理 浏览器是否发起请求图片是根据 中src的属性,所以实现原理就是在图片没有进入可视区域的时候将图...
    冰雪_666阅读 1,475评论 0 3
  • C端开发过程中的mv埋点, 要求元素暴露在视口内, 用户可见时才上报mv埋点,有一种做法是判断元素的滚动距离,人工...
    宋乐怡阅读 4,918评论 0 0
  • 懒加载,通常是延迟加载初始视口外的图像,直到我们滚动页面,达到图像与底部视口的交汇处才开始加载图像。 我们需要做的...
    lio_zero阅读 4,965评论 0 16