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秒输出一次

相关推荐
AntoineGriezmann1 分钟前
基于 Unocss 的后台系统 SVG 图标方案实践
前端
小夏卷编程2 分钟前
ant-design-vue 2.0 a-table 中实现特殊行样式,选中样式,鼠标悬浮样式不一样
前端·javascript·vue.js
wulijuan8886662 分钟前
前端性能优化之图片webp
前端
一颗烂土豆3 分钟前
ECharts 水球图不够炫?试试 RayChart 的创意可视化玩法
前端·vue.js·数据可视化
如果你好4 分钟前
TypeScript 接口(interface)完全指南:语法、特性与实战技巧
vue.js·typescript
天才熊猫君4 分钟前
Vue 3 命令式弹窗组件
前端
NEXT065 分钟前
CSS基础-标准盒模型与怪异盒模型
前端·css
DaMu6 分钟前
Dreamcore3D ARPG IDE “手搓”游戏引擎,轻量级实时3D创作工具,丝滑操作,即使小白也能轻松愉快的创作出属于你自己的游戏世界!
前端·架构·three.js
代码猎人8 分钟前
什么是尾调用,使用尾调用有什么好处?
前端
AI_56789 分钟前
Webpack从“配置到提速”,4步解决“打包慢、体积大”问题
前端·javascript·vue.js