v3图片懒加载

// 图片加载不出来时显示的图片
import defaultImg from '@/assets/images/200.png'

const defineDirective = (app) => {
  // 扩展自定义指令
  app.directive('lazyload', {
    // Vue2规则 :vue.directive('lazyload',{ 
                // inserted () {}
               })
    // Vue3规则:mounted
    mounted(el, bindings) {
      // el表示使用指令的DOM元素
      // bindings表示指令相关的信息是一个对象
      // 指令的功能:实现图片的懒加载
      // 1、监听图片进入可视区
      const oberver = new IntersectionObserver(([{ isIntersecting }]) => {
        if (isIntersecting) {
          // 进入了可视区
          // 2、给图片的src属性赋值图片的地址
          el.src = bindings.value
          // 取消图片的监听
          oberver.unobserve(el)
          // 加载的图片失败了,显示默认的图片地址
          el.onerror = () => {
            // 显示默认图片
            el.src = defaultImg
          }
        }
      })
      oberver.observe(el)
    }
  })
}

export default {
  install(app) {
    // 自定义指令
    defineDirective(app)
  }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React图片懒加载是一种对网页性能优化的方式,通过延迟加载图片资源来提高页面加载速度,减轻服务器压力,节省流量。在React中,可以使用第三方库react-lazy-load-image-component来实现图片懒加载。首先,需要安装该组件,可以使用npm命令进行安装,例如:npm i --save react-lazy-load-image-component。然后,在React函数组件中,可以使用LazyLoadImage组件来实现图片懒加载。通过监听滚动事件,判断图片是否进入视图中,然后再加载图片。在组件的渲染时,添加对scroll事件的监听,并在销毁阶段取消监听,以减少页面负担。具体代码示例如下: ```javascript import React, { useEffect } from 'react'; import { LazyLoadImage } from "react-lazy-load-image-component"; export default function ImageLazyLoad() { const imgList = \[ "https://scpic.chinaz.net/files/pic/pic9/202009/apic27858.jpg", "https://pic1.zhimg.com/v2-e915686432f3bb45dd43705ec445352d_r.jpg", "https://www.euweb.cn/wp-content/uploads/2016/12/302636-106.jpg", "https://scpic.chinaz.net/files/pic/pic9/202009/apic27858.jpg", \]; useEffect(() => { const checkImages = () => { // 判断图片是否进入视图中,然后再加载图片 }; setTimeout(() => { checkImages(); }, 1); window.addEventListener('scroll', checkImages); return () => { window.removeEventListener("scroll", checkImages); }; }, \[\]); return ( <div style={{ width: "60%" }}> {imgList.map((img) => ( <LazyLoadImage src={img} width={600} height={400} alt="Image Alt" /> ))} </div> ); } ``` 在上述代码中,通过在组件的useEffect钩子中添加对scroll事件的监听,并在销毁阶段取消监听,实现了图片懒加载的效果。同时,使用LazyLoadImage组件来渲染图片,并设置图片的宽度、高度和alt属性。这样,在滚动页面时,只有当图片进入视图中时才会加载图片,从而提高页面加载速度。 #### 引用[.reference_title] - *1* *2* [react 实现图片懒加载](https://blog.csdn.net/Kmnyed/article/details/130691665)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [React懒加载:页面多图片加载优化](https://blog.csdn.net/TwelveSpring/article/details/125300867)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值