Vue图片懒加载

安装 vueuse 插件

npm i @vueuse/core

搜索 useIntersectionObserver 方法
javascript 复制代码
import { ref } from 'vue'
import { useIntersectionObserver } from '@vueuse/core'
 
export default {
  setup() {
    const target = ref(null)
    const targetIsVisible = ref(false)
 
    const { stop } = useIntersectionObserver(
      target,
      ([{ isIntersecting }], observerElement) => {
        targetIsVisible.value = isIntersecting
      },
    )
 
    return {
      target,
      targetIsVisible,
    }
  },
}
使用:
main.js:
1、引入方法
javascript 复制代码
// 用来图片懒加载
import { useIntersectionObserver } from "@vueuse/core";
2、提前配置好 自定义指令
javascript 复制代码
// 全局指令
app.directive("img-lazy", {
  mounted(el, binding) {
    console.log(el, binding.value);
    const { stop } = useIntersectionObserver(
      el,
      ([{ isIntersecting }], observerElement) => {
        console.log(isIntersecting);
        if (isIntersecting) {
          el.src = binding.value;
          stop()     //避免性能浪费,视口可见后不再监听
        }
      }
    );
  },
});
html部分:
javascript 复制代码
 <li v-for="item in list" :key="item.id">
	<RouterLink to="/">
		<img alt="" v-img-lazy="item.picture" />
        <p class="name">{{ item.name }}</p>
        <p class="price">&yen;{{ item.price }}</p>
	</RouterLink>
</li>
相关推荐
我穿棉裤了4 分钟前
解决el-form表单校验时显示的红色星号与文字对齐的问题
前端·javascript·vue.js
copyer_xyf6 分钟前
Python 类全面总结
前端·后端·python
copyer_xyf10 分钟前
Python 类型注解:从 TypeScript 迁移理解
前端·后端·python
独特的螺狮粉10 分钟前
宋朝官阶制度APP——通过鸿蒙PC Electron框架完成
前端·华为·electron·开源·harmonyos·鸿蒙·鸿蒙系统
IT_陈寒11 分钟前
React开发实战:从入门到精通
前端·人工智能·后端
wuhen_n11 分钟前
实战!前端开发完整 LangChain AI 智能体(附源码)
前端·langchain·ai编程
超人不会飞_Jay14 分钟前
2026.6.4 Vue用户中心项目笔记
前端·vue.js·笔记
copyer_xyf17 分钟前
Python 函数全面总结
前端·后端·python
时寒的笔记17 分钟前
瑞数案例欧冶解读py和js文件最终版
开发语言·javascript·ecmascript
怕浪猫21 分钟前
Electron 开发实战(十):应用打包与分发|全平台打包、签名、自定义协议实战
前端·javascript·electron