当前位置: 首页 > java >正文

Vue自定义指令-防抖节流

Vue2版本

// 防抖

// <el-button v-debounce="[reset,'click',300]" ></el-button>

// <el-button v-debounce="[reset]" ></el-button>

Vue.directive('debounce', {

  inserted: function (el, binding) {

    let [fn, event = "click", time = 300] = binding.value

    let timer

    el.addEventListener(event, () => {

      timer && clearTimeout(timer)

      timer = setTimeout(() => fn(), time)

    })

  }

})

// 节流

// <el-button v-debounce="[reset,'click',300]" ></el-button>

// <el-button v-debounce="[reset]" ></el-button>

Vue.directive('throttle', {

  inserted: function (el, binding) {

    let [fn, event = 'click', time = 300] = binding.value

    let timer, timer_end;

    el.addEventListener(event, () => {

      if (timer) {

        clearTimeout(timer_end);

        return timer_end = setTimeout(() => fn(), time);

      }

      fn();

      timer = setTimeout(() => timer = null, time)

    })

  }

})

Vue3版本

// 防抖指令

app.directive('debounce', { beforeMount(el, binding) {

let [fn, event = 'click', time = 300] = binding.value;

let timer;

el.addEventListener(event, () => {

if (timer) clearTimeout(timer); timer = setTimeout(() => fn(), time); }); } });

// 节流指令

app.directive('throttle', { beforeMount(el, binding) {

let [fn, event = 'click', time = 300] = binding.value;

let timer, timer_end;

el.addEventListener(event, () => {

if (timer) { clearTimeout(timer_end); return timer_end = setTimeout(() => fn(), time); } fn(); timer = setTimeout(() => timer = null, time); }); } });

http://www.xdnf.cn/news/303.html

相关文章:

  • 易派客九周年再启新程 数智赋能工业供应链高质量发展
  • 开发者调研:使用AI工具后需求交付效率提升210%
  • 安卓手机万能遥控器APP推荐
  • Qt 入门 5 之其他窗口部件
  • 2025年4月18日漏洞文字版表述一句话版本(漏洞危害以及修复建议),通常用于漏洞通报中简洁干练【持续更新中】,漏洞通报中对于各类漏洞及修复指南
  • Vue3+Openlayers教程导航页【目录】
  • DeepSeek 部署中的常见问题及解决方案
  • easyui进度条
  • ValueError: model.embed_tokens.weight doesn‘t have any device set
  • RHCE的简单配置
  • b站PC网页版视频播放页油猴小插件制作
  • Avalonia DataGrid 行颜色变化(根据内容 OR 隔行变色)
  • 【嵌入式】【阿里云服务器】【树莓派】学习守护进程编程、gdb调试原理和内网穿透信息
  • 分布式训练(记录)
  • 大屏设计与汇报:政务服务可视化实践
  • 针对渲染圆柱体出现“麻花“状问题解决
  • 《操作系统真象还原》第九章(2)——线程
  • 「仓颉编程语言」Demo
  • kaamel Privacy agent:AI赋能的隐私保护技术解决方案
  • 广东水利水电安全员 B 证考试精选题
  • 电能质量治理解决方案:构建高效、安全的电力系统
  • 中国首个全国34省3,667个城市多属性建筑数据集(屋顶、高度、结构、功能、风格、年龄、质量等属性)
  • 《TIME-LLM: TIME SERIES FORECASTINGBY REPROGRAMMING LARGE LANGUAGE MODELS》
  • LeeCode912. 排序数组
  • 嵌入式学习(39)-基于STM32的GPIO电平反转检测
  • rhce第一次作业
  • GitHub创建远程仓库
  • DB-Day8笔记-with公共表达式综合案例窗口函数进阶
  • 【HCIA】使用Access port实现简易的VLAN间通信
  • 静态测试:软件质量保障的第一道防线