- vue自定义指令的方式:
- 全局注册
1 | const app = Vue.createApp({}) |
- 局部注册(配置directives:{}即可)
1 | directives: { |
然后就可以在模板上的任何元素上使用新的v-force指令,就像使用v-on,v-click等指一样
[vue3自定义指令官方文档]https://v3.cn.vuejs.org/guide/custom-directive.html#%E7%AE%80%E4%BB%8B
- 自定义图片懒加载指令
思路:
- 文件名lazy-img.js
- 文件导出为之一函数,接受Vue创建出来的app参数,
- 通过app.directive自定义指令
- 用到一个API ntersectionObserver 详细介绍看MDN地址
- 监听到图片即将进入可视区时,把v-lazy的值赋值为真的的src即可
- 扩展
- 利用img.onerr() 函数监听图片加载出错,为其设置默认图片
- 可以给图片的src 设置一个 loading图片 提高用户体验
代码:
1 | export default function(app) { |
效果:

