自定义指令实现按钮防抖

Vue使用自定义指令实现按钮防抖功能,防止多次调接口 首先什么是防抖? 防抖就是指☞触发事件后在n秒内函数只执行一次,如果在n秒内又触发了事件,则会重新计算函数执行时间。说到防抖大家应该会想到节流,两者cp哈哈哈。 什么是节流? 节流是指连续触发事件但是在n秒钟只执行一次。 ` function throttle(fn, delay){ let timer; return function(){ if (timer) { return; } let me = this; let _arg = arguments; timer = setTime.. 阅读详情

项目中经常会遇到防抖这个场景,比如,页面滚动事件;输入框自动搜索等。为了方便统一管理,提高项目代码的可维护性。我们可以利用Vue的自定义指令完成这个功能。

自定义指令

生命周期/钩子函数

自定义指令拥有自身的生命周期,如下所示:

created(el,binding,vnode,preNode){}   // 在绑定元素的属性之前 
beforeMounted(el,binding,vnode,preNode) {}  //在被插入到Dom前调用
mounted(el,binding,vnode,preNode){}   //在绑定他的父组件和他所有的子组件都挂载完毕后调用
beforeUpdate(el,binding,vnode,preNode) {} //在绑定的父元素更新前调用
updated(el,binding,vnode,preNode) {}  //在绑定元素的父组件及它的所有子组件都更新完成后调用
beforeUnmount(el,binding,vnode,preNode) {}  //绑定元素的父组件卸载前调用
unmounted(el,binding,vnode,preNode) {} //绑定元素的父组件卸载后调用

生命周的参数

  • el:指令绑定到的元素。可以用于直接操作DOM

  • binding:一个对象包含如下属性。
    value:传递给指令的值。例如在 v-my-directive=“1 + 1” 中,值是 2。
    oldValue:之前的值,仅在 beforeUpdate 和 updated 中可用。无论值是否更改,它都可用。
    arg:传递给指令的参数 (如果有的话)。例如在 v-my-directive:foo 中,参数是 “foo”。
    modifiers:一个包含修饰符的对象 (如果有的话)。例如在 v-my-directive.foo.bar 中,修饰符对象是 { foo: true, bar: true }。
    instance:使用该指令的组件实例。
    dir:指令的定义对象。

  • vnode:代表绑定元素的底层 VNode。

  • prevNode:代表之前的渲染中指令所绑定元素的 VNode。仅在 beforeUpdate 和 updated 钩子中可用。

步骤

1. 在项目utils文件夹中新增debounce.js文件

在文件中编写防抖的逻辑代码

export const debounce = {
  //ES6中对象中的方法可以直接写,不用写属性名
  mounted(el, binding) {
    console.log(el, binding)
    const doHandler = () => {
      let timer = null
      return function () {
        if (timer) {
          clearTimeout(timer)
        }
        timer = setTimeout(() => {
          binding.value.handler()
        }, binding.value.delay);
      }
    }
    el.addEventListener('click', doHandler())
  },
}

2.在utils文件夹下新建directives.js文件

在此文件中引入项目中所有自定义指令,并将它们统一注册。

import {debounce} from './debounce'

const directivesObj = {
    debounce
}

const directives = {
//使用Vue的install方法统一注册自定义指令。
    install(Vue) {
        Object.keys(directivesObj).forEach(key => {
            Vue.directive(key,directivesObj[key])
        })
    }
}

export default directives

3.在main.js中使用指令

import directives from './util/directives'
const app = createApp(App)
console.log(directives)
//使用install方法注册的对象可以通过app.use()来使用
app.use(directives)
数字电子技术实验——按键防抖动 按键防抖动多种方法实现。ModelSim仿真。 阅读详情

相关推荐

Mplus—交叉滞后面板模型(Cross-Lagged Panel Model, CLPM)

本文介绍交叉滞后模型相关知识,以及显变量模型与潜变量模型在Mplus中的语法。

m0_54401011的博客 1万+

按钮防抖与节流-vue2

防抖与节流,应用场景有很多,例如:禁止重复提交数据的场景、搜索框输入搜索条件,待输入停止后再开始搜索。

前后端分离,人不分离! 3937

UCIe相关开源项目记录

目前找到的和UCIe协议有关的5个开源项目,如果也有正在做的朋友,欢迎私信交流

m0_64102565的博客 823

vue项目中按钮防抖处理

1. 概念连续点击按钮时,按钮的点击事件只会触发触发一次,结束连续点击后,再次点击按钮时才会触发按钮的点击事件2. 意义按钮防抖是针对按钮操作时,用户连续点击按钮时也会每次触发按钮的绑定的点击事件,这会造成多次无效的触发。

weixin_46996561的博客 4242

OAI数据集申请下载全攻略:从个人NDA账号注册到数据包下载的保姆级避坑指南

本文提供OAI数据集申请下载的完整指南,涵盖从个人NDA账号注册到数据包下载的全流程。重点解析login.gov验证陷阱、浏览器兼容性问题、NDA权限申请技巧及nda-tools高效使用方法,帮助医学影像研究者避开常见技术障碍,快速获取全球骨关节炎研究数据库OAI的宝贵数据资源。

weixin_28698059的博客 752

在Matlab中开发AutoSAR模型的流程(自下而上)

前面介绍了AutoSAR软件组件开发的两种方式,其中自下向上的方式,是从模型出发,流程如下。

小胡同学的工程师学习之路 5366

按键的防抖动处理

按键是一种常用的控制电器元件,常用来接通或断开电路,从而达到控制电机或者其他设备运行的开关。 在按键没有按下去的时候1,2号脚相连,3,4号脚相连。按键按下去的时候,1,2,3,4号脚就全部接通。 实验:使用按键来控制LED的亮或者灭。 一般情况是直接把按键开关串联在led的电路中来开关,这种应用情况比较单一。 这次实验通过间接的方法来控制,按键接通后判断按键电路中的输出电压,如果电压大于4.88V,就使给LED电路输出高电平,反之就输出低电平。使用逻辑判断的方法来控制LED亮或者灭。 本次连接方法如下图

acktomas的博客 1万+

手把手教你设计T型和Π型衰减器:从理论计算到实际搭建(含误差分析)

本文详细介绍了T型和Π型衰减器的设计方法,从理论计算到实际搭建,包括电阻值推导、元件选择技巧及误差分析。通过实例演示如何设计50Ω系统中的10dB衰减器,并提供了高频应用和优化策略,帮助电子工程师掌握阻抗匹配与信号衰减的核心技术。

weixin_33737774的博客 395

Vue 自定义指令封装实现防抖 防止按钮暴力点击

Vue 封装实现防抖 防止按钮暴力点击

m0_65607651的博客 1218

Ubuntu20.04安装Ceres库

ceres真难安装。

little_white138的博客 8379

从入门到精通|Yalmip+Cplex在电力系统中的应用(Matlab代码实现)

​ 火电成本包括运行成本、碳捕集成本,其中火电运行成本由运行维护成 本和发电煤耗成本构成,发电煤耗与其出力关系: ,F 为机组煤耗量(kg/h),P 为机组出力/MW;运行维护成本按照 0.5 倍煤耗成本考虑,碳捕集成本取决于碳排放量及碳捕集单价,火电机组相关参数如附表 1 所示,电煤价格为 700 元/t ​

weixin_46039719的博客 1552

vue-pc端实现按钮防抖处理-自定义指令

我们经常在移动端会处理按钮和输入框的防抖和节流处理,在pc端很少进行这样的操作但是在pc端也是可以进行按钮的防抖操作,这样也是比较合理,可以不用但不可以不会我们只要配合vue项目自定义指令加上全局注册,就可以实现按钮的防抖操作。并且这种方式是在做加法,把自定义指令全局注册之后,只需要把@click换成v-antishake(自定义指令)即可转存失败重新上传取消1.在src/directive/module下建立antishake.js文件-代码如下}, 2000)})​。

路虽远行则将至,事虽难做则必成。 689

(王道408考研操作系统)第一章计算机系统概述-第三节2:中断和异常

注意!!! 本节内容和《计算机组成原理》中的中断有重合,如果需要详细了解的话可以点击链接跳转:(计算机组成原理)第七章输入和输出系统-第四节2:I/O方式之程序中断方式 为了内容完整,部分内容会借用上述文章 文章目录一:中断和异常的基本概念(1)中断和异常的定义 一:中断和异常的基本概念 在操作系统引入核心态和用户态这两种工作状态后,就需要考虑两种状态之间是如何切换的。 操作系统内核工作在核心态,用户程序工作在用户态,系统不允许用户程序使用核心态的功能,但是用户程序为了完成某些操作又必须使用这些功能

快乐江湖的博客 3531

vue3.0中如何载入自定义指令-实现按钮权限控制、实现防抖和节流

总结适用于所有定时器(计时器和延时器)

吴冬雪的博客 1184

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

vue2项目通过注册自定义指令来实现按钮的防抖节流

在项目中新建 myDirective.js 文件。通过export default暴露出来。/** @Description: 添加全局自定义指令。* 防抖,v-debounce。节流,v-throttle、v-throttle-disabled(可能无效)。* 示例:<el-button v-throttle="[resetData]">刷新</el-button>,使用默认配置,监听click事件,300毫秒内只会执行一次函数resetData。

wancaicai_的博客 838

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

vue注册全局自定义指令,实现按钮的防抖

我们可以在src目录下新建utils文件夹,里面新建文件夹(随便起个名字,本文为了演示防抖,就命名为了debounce.js) 上代码 const debounce = { install(Vue) { Vue.directive('debounce', { inserted: function (el, binding) { let timer el.addEventListener('c

weixin_47813845的博客 828

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

vue项目中使用全局自定义指令实现按钮防抖功能

在Vue.js中,防抖(Debouncing)是一种,主要用于限制在短时间内频繁触发的事件(比如输入框内容变化、窗口大小调整、滚动事件等)的执行频率,以提升性能和用户体验。防抖函数会在事件触发后延迟一定的时间再执行,如果在延迟期间内该事件再次被触发,则重新计算延迟时间。这样,只有在最后一次事件触发后的延迟时间内没有新的事件触发,防抖函数才会执行。这种机制有效地减少了事件的执行次数,尤其是在用户进行连续操作时(例如快速输入文字或连续点击按钮),可以避免无谓的计算和DOM操作,从而。

weixin_62610657的博客 1262

vue3、ts、Element-plus按钮防抖自定义指令

vue3、ts 按钮防抖自定义指令

qq_51622532的博客 4451

vue3常用自定义指令封装v-permission,按钮权限控制,添加防抖节流

后台管理项目免不了要做权限控制,常见的分为路由级别和按钮级别,在此主要针对于按钮权限,比如说某个用户或者角色对数据有没有增删改查的权限,例如以下功能,巡查人员可以点击导入和新建,而一般用户只能选择下载模板。在 directives文件夹下分别创建permission、debounce、throttle三个ts文件,分别用于存放权限控制,防抖和节流的业务逻辑,结构清晰,方便维护以及更低的耦合度。在index.ts文件中分别导入每个自定义指令对象,再遍历注册每一个指令。

爱码士&的博客 6695

vue项目中使用全局自定义指令实现防抖和节流,防止频繁调用接口

vue项目中使用全局自定义指令实现防抖和节流,防止频繁调用接口

weixin_51938803的博客 5150

vue自定义防抖&节流指令的实现&全局指令定义和使用-案例

出于业务需求需要做按钮的点击防抖,开始的打算是二次封装 element-ui的el-button来实现的,然后就做了,但又觉得这样不够简洁,然后就看看广大的掘友大都是怎么做的呢,关于防抖节流的处理,发现大家都是用vue自定义指令做的,看了看vue自定义指令也不麻烦,便自己动手也撸一个,如下 v-debounce 一丶需求 按钮点击防抖 例:刷新当前组件并重新请求 搜索框输入搜索,待输入停止后开始搜索 以其其他可能需求 二丶思路 监听指定事件,事件被触发后清除之前事件 => 可选有定时器

JackieDYH的博客 4539

使用vue3全局注册按钮防抖自定义指令

【代码】使用vue3全局注册按钮防抖自定义指令。

m0_56654689的博客 411

Vue处理防抖和节流,项目中封装防抖和节流自定义指令

Vue防抖和节流的处理,概念和应用场景举例,实际项目开发的自定义指令封装

weixin_53641562的博客 4069

使用vue自定义指令实现防抖

框架:elementUi。

B2689429488的博客 668

【按钮防抖】el-button和普通按钮防抖,点击一次禁用一秒再恢复

右边普通按钮通过自定义指令控制,这里自定义指令写法是html版本的。左边是组件按钮,通过disabled控制。点击后的效果,一秒后会恢复可点击。

seeeeeeeeeee的博客 646
上一篇: ios适配虚拟home键
下一篇: tsconfig.json配置详解
菊の物语
博客等级 码龄10年 322粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值