vue自定义防抖指令

main.js中

复制代码
Vue.directive('throttle', {
  bind: (el, binding) => {
    let throttleTime = binding.value; // 防抖时间
    if (!throttleTime) { // 用户若不设置防抖时间,则默认2s
      throttleTime = 2000;
    }
    let cbFun;
    el.addEventListener('click', event => {
      if (!cbFun) { // 第一次执行
        cbFun = setTimeout(() => {
          cbFun = null;
        }, throttleTime);
      } else {
        event && event.stopImmediatePropagation();
      }
    }, true);
  },
});

使用

复制代码
	<div  @click="sayhello" v-throttle>提交</div>

实现效果,控制台2秒输出一次

相关推荐
oy_mail7 分钟前
spring-boot-starter和spring-boot-starter-web的关联
前端
空中海20 分钟前
第四章:Vue Router
前端·javascript·vue.js
竹林81820 分钟前
从零集成RainbowKit:我如何在一个周末搞定多链钱包连接并填平三个大坑
前端·javascript
2601_9534656121 分钟前
M3U8 在线播放器:无需安装,一键调试 HLS 直播流
开发语言·前端·javascript·开发工具·m3u8·m3u8在线播放
Ruihong22 分钟前
你写的是 Vue,跑起来是纯 React?这是什么黑科技
vue.js·react.js·面试
风止何安啊25 分钟前
【前端续命术】请求总失败?给你的 AJAX 装上 “不死鸟” 重试 Buff
前端·javascript·面试
qq_120840937125 分钟前
Three.js 工程向:资源生命周期管理与显存回收实践
前端·javascript·orbitcontrols
MaoziShan26 分钟前
CMU Subword Modeling | 23 Syllables and Syllabification
前端·人工智能·机器学习·语言模型·自然语言处理·中文分词
M ? A28 分钟前
VuReact 1.6.2 发布,新一代 Vue 3 转 React 编译工具
前端·javascript·vue.js·react.js·面试·开源·vureact
Nicander35 分钟前
vibe-coding 项目:中文字体子集化工具(纯前端)
前端