在项目中会遭遇到用户连续点击多次按钮的情况,

这个时候就需要使用防抖函数,在一定时间内只触发一次函数执行。

实现

在 Vue 项目中,在 src > utils 目录下新建 Debounce.js

Debounce.js

/*** 一个简单的函数防抖* @param {Function} fun 需要限制执行频率的函数* @param {Number} delay 延迟时间,这段时间过后,才可触发第二次*/
export default function (fun, delay) {// 记录上一次函数触发的时间var timer = null;var debounced = function () {var ctx = this;var args = arguments;// 清除上一次延时器if (timer) clearTimeout(timer);timer = setTimeout(function () {fun.apply(ctx, args);}, delay);};return debounced;
}

注意,fun直接调用 方法里面的this会指向window
而fun.apply()的第一个参数 可以 指定这个方法里的 this是谁

main.js 主要代码

/*** 防抖 防止重复点击* 传参:v-debounceClick="() =>{handleFun(arg)}"* 不传参:v-debounceClick="handleFun"* delayTime:延迟的时间,只执行最后一次*/
Vue.directive('debounceClick', {bind(el, binding, vnode, oldvnode) {},inserted: function (el, binding) {let delayTime = el.getAttribute('delay-time') || 1500el.onclick = Debounce(function () {binding.value()}, delayTime)},
})

调用

<el-button v-debounceClick="debounce">防抖</el-button>
debounce() {console.log(111);}

vue自定义指令之防抖函数相关推荐

  1. vue自定义指令封装节流_Vue自定义指令封装节流函数的方法示例

    节流函数是web前端开发中经常用到的一个开发技巧,在input实时搜索,滚动事件等,为了避免过多消耗性能,我们都会使用节流函数.在<JavaScript高级程序设计>一书中有这样的一个例子 ...

  2. clientsideevents能定义几个click事件_分享8个非常实用的Vue自定义指令

    作者:lzg9527 https://juejin.cn/post/6906028995133833230 在 Vue,除了核心功能默认内置的指令 ( v-model 和 v-show ),Vue 也 ...

  3. 如何写一个Vue自定义指令

    Vue除了核心功能默认内置的指令 ,Vue 也允许注册自定义指令. 自定义指令是用来操作DOM的.尽管Vue推崇数据驱动视图的理念,但并非所有情况都适合数据驱动.自定义指令就是一种有效的补充和扩展,不 ...

  4. Vue的自定义指令以及Vue自定义指令的应用场景

    前言 一.Vue的自定义指令分为? vue中除了核心功能内置的指令外,也允许注册自定义指令.有的情况下,对普通DOM元素进行底层操作,这时候就会用到自定义指令. 自定义指令分为全局自定义指令和局部的自 ...

  5. vue自定义指令使用

    前言 一.Vue的自定义指令分为? vue中除了核心功能内置的指令外,也允许注册自定义指令.有的情况下,对普通DOM元素进行底层操作,这时候就会用到自定义指令. 自定义指令分为全局自定义指令和局部的自 ...

  6. vue 自定义指令(directive)实例

    一.内置指令 1.v-bind:响应并更新DOM特性:例如:v-bind:href  v-bind:class  v-bind:title  v-bind:bb 2.v-on:用于监听DOM事件: 例 ...

  7. pyqt5 treeview鼠标右键菜单事件_【动手实践】使用 Vue 自定义指令实现右键菜单...

    本文来自于 神奇的程序员 前言 浏览器里右键时会有一个默认的菜单,在我的开源项目中正好有自定义右键菜单的需求,在npm库找了下与之相关的包,发现都是以组件形式实现的,感觉那种做法太过繁琐. 于是,我就 ...

  8. 9、Vue自定义指令

    Vue自定义指令 1.vue指令和自定义指令 2.使用自定义指令 2.1.全局注册 2.2.局部注册 3.钩子函数 1.vue指令和自定义指令 什么是指令? v-model.v-bind.v-on.v ...

  9. vue 自定义指令 directives

    原文链接: vue 自定义指令 directives 上一篇: vue 事件修饰符 stop,capture,prevent 下一篇: js 坑... vue 可以自己扩充指令 增加一个v-color ...

最新文章

  1. 清除距今天7天的日志
  2. rabbitmq java集群_RabbitMQ集群整合SpringBoot2.x
  3. VTK:PolyData之KochanekSpline
  4. java中qq中拉伸的文件,delphi中如何实现QQ中的截图并实现拉伸放大移动的功能
  5. CI框架--加载静态内容
  6. Sublime 格式化代码 快捷键以及插件使用
  7. 服务器磁盘扩展卷时遭遇“There is not enough space available on the disk(s) to complete this operation.”错误...
  8. linux java url 异常_Java连接虚拟机(Linux)中的Oracle数据库,连接异常~新手求解!
  9. 摩拜前端周刊第15期
  10. Axis2生成wsdl的一种方法
  11. 力士乐电源模块故障代码_REXROTH DRIVE博士力士乐伺服驱动器故障代码大全
  12. 机智云开源框架二次开发之换皮肤,几乎不用改代码
  13. 如何写一篇高质量的伪原创文章
  14. selenium+python处理JS弹窗
  15. 减少域名DNS解析时间将网页加载速度提升新层次
  16. 网络广告中各种广告形式
  17. Android HOME键那些事
  18. JVM生态系统2018调查报道
  19. VMware虚拟磁盘VMDK格式说明书1.1---3 The Descriptor File描述文件
  20. 网站安全与渗透测试工程师岗位区别

热门文章

  1. 魅族MX4安装Ubuntu Touch 16.04
  2. WSL Ubuntu 20.04下Android源码下载
  3. 爬虫学习----解决中文乱码
  4. 路由器交换机:单臂路由下的DHCP
  5. 数据结构与算法|第1节
  6. 史诗级计算机字符编码知识分享,万字长文,一文即懂!
  7. css3动画,实现正方体旋转
  8. IT行业员工试用期工作总结
  9. 百度外卖 php,百度外卖移动组件架构与优化
  10. glusterfs创建一个简单的volume