美文网首页React.js学习前端文章收集
React如何实现图片懒加载

React如何实现图片懒加载

作者: 潘杉杉_06_03 | 来源:发表于2019-01-28 23:30 被阅读4次

这是一个用纯函数组件实现的 lazy-load image

LazyLoad.jsx

import React from 'react'

const css = {
  box: {
    height: '400px',
    with: '100%',
    border: '1px solid pink',
    overflowY: 'scroll',
  },
  imageBox: {
    width: '500px',
    height: '500px',
    margin: '20px auto',
  },
}
const images = [] // 要加载的 img 图片(jsx)
const refs = [] // 图片的 ref(操作dom时用)

for (let i=0; i<4; i++) {
  const ref = React.createRef() // 新建空 ref
  refs.push(ref) // 放入 ref 数组
  images.push( // 新建 img jsx 放入 images (图片地址不放入 src 而是放入 自定义属性 data-src)
      <div style={css.imageBox} key={i}>
        <img ref={ ref } data-src={`https://pschina.github.io/src/assets/images/${i}.jpg`} />
      </div>
  )
}

const threshold = [0.01] // 这是5触发时机 0.01代表出现 1%的面积出现在可视区触发一次回掉函数 threshold = [0, 0.25, 0.5, 0.75]  表示分别在0% 25% 50% 75% 时触发回掉函数

// 利用 IntersectionObserver 监听元素是否出现在视口
const io = new IntersectionObserver((entries)=>{ // 观察者
  entries.forEach((item)=>{ // entries 是被监听的元素集合它是一个数组
    if (item.intersectionRatio <= 0 ) return // intersectionRatio 是可见度 如果当前元素不可见就结束该函数。
    const {target} = item
    target.src = target.dataset.src // 将 h5 自定义属性赋值给 src (进入可见区则加载图片)
  })
}, {
  threshold, // 添加触发时机数组
});

// onload 函数
const onload = ()=>{
  refs.forEach( (item) => {
    io.observe(item.current) // 添加被观察的函数。
  } )
}

// 定义懒加载纯函数组件
// 为了监听页面加载完毕 定义了一个img 利用 onerror 函数替代 onlaod {src需填写一个不存在图片的路径}
const LazyLoadPage = ()=>(
  <div style={css.box}>
    {images}
    <img onError={onload} src="" />
  </div>
)

export default LazyLoadPage
react-lazyload.gif

在线预览效果

(完)

相关文章

  • React如何实现图片懒加载

    这是一个用纯函数组件实现的 lazy-load image LazyLoad.jsx 在线预览效果 (完)

  • 懒加载课堂笔记

    饥人谷_李栋 定义 图片懒加载 阶段实现 如何判断图片在可视范围 代码思路 封装 懒加载抽离 曝光去重 总结 一、...

  • 图片懒加载的原理

    懒加载思路及实现 实现懒加载有四个步骤,如下:1.加载loading图片2.判断哪些图片要加载【重点】3.隐形加载...

  • react 图片懒加载

    一、react中useEffect监听事件需要在组件卸载前清除 二、判断元素是否进入视图 三、滚动实时监听处理图片...

  • 图片懒加载

    前端实现图片懒加载(lazyload)的两种方式 原生JS实现最简单的图片懒加载 30行Javascript代码实...

  • 如何实现图片懒加载,预加载!!

    提到前端性能优化中图片资源的优化,懒加载和预加载就不能不说,下面我用最简洁明了的语言说明懒加载和预加载的核心要点以...

  • 懒加载和瀑布流

    一、简述图片懒加载的实现原理 图片懒加载 若一开始,页面上有许多的图片要加载,而如果同时加载这么多图片,会消耗性能...

  • 前端如何实现图片懒加载(lazyload) 提高用户体验

    来源:前端如何实现图片懒加载(lazyload) 提高用户体验 原文地址:http://i.jakeyu.top/...

  • 图片的懒加载和预加载

    懒加载:又称延迟加载,需要等到某个情况下才加载,相对可以缓解服务器压力。 实现原理:以懒加载图片为例,当加载图片较...

  • 实现图片懒加载

    项目中遇到一个公示信息列表,其中有图片预览, 因为窗口小、列表长、图片多,加载很慢,于是想把图片做成懒加载模式。 ...

网友评论

    本文标题:React如何实现图片懒加载

    本文链接:https://www.haomeiwen.com/subject/khctsqtx.html