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

vue3中的全局防抖节流指令

适用场景,一般业务当中存在查询、新增、编辑等操作类型,使用防抖有效防止疯狂点击增加多条数据问题

// 定义全局自定义指令
app.directive("antiShake", {
  // 在元素的 attribute 或事件监听器被应用之前调用   
  created(el, binding,) {
    let cbFun: NodeJS.Timeout|null = null;
    el.addEventListener("click", (event:any) => {
      event && event.stopImmediatePropagation();
      if (!cbFun) {
        cbFun = setTimeout(() => {
          binding.value()
        }, 2000);
      } else {
        clearTimeout(cbFun);
        cbFun = setTimeout(() => {
          binding.value()
        }, 2000);
      }
    }, true)
  },
});


//节流函数
app.directive("throttle", {
  created(el, binding,) {
    let throtTime = binding.value;
    if (!throtTime) {
      throtTime = 2000
    }
    let cbFun: NodeJS.Timeout|null = null;
    el.addEventListener("click", (event:any) => {
      if (!cbFun) {
        cbFun = setTimeout(() => {
          cbFun = null;
        }, throtTime);
      } else {
        event && event.stopImmediatePropagation();
      }
    }, true)
  },
});

页面使用方法

<template #footer>
          <span class="dialog-footer">
            <el-button type="warning" v-antiShake="add" @click="add()">确定</el-button>
          </span>
</template>

http://www.kler.cn/news/10284.html

相关文章:

  • Vue学习——【第五弹】
  • 【权限维持】域控后门SSPHOOKDSRMSID万能钥匙
  • 能聊天、会学习,远不是GPT的终局
  • Android—IMS的InputReader
  • 单片机程序是如何运行起来
  • python+vue+ 疫情冷链追溯管理系统
  • 数字中国理念引领国企人力资源数字化转型与实践
  • 2.29、共享内存(2)
  • Springboot整合Quartz实现定时任务数据库动态配置
  • Python数据分析:轻松实现数据处理、分析和可视化的入门教程
  • 代码自动发布系统
  • qt - 隐式共享与d-pointer技术
  • Android 11.0 原生SystemUI下拉通知栏UI背景设置为圆角背景的定制(二)
  • ptuning v2 的 chatglm垂直领域训练记录
  • 银行数字化转型导师坚鹏:金融科技与数字化转型成功案例
  • 腾讯云服务器TencentOS系统安装宝塔Linux面板命令
  • 软件管理 基础配置(运维笔记)
  • 所有知识付费都可以用 ChatGPT 再割一次?
  • 设计师都在用的6个免费设计素材网站~
  • 【C++】内联函数理解
  • d修复导入c的问题
  • MySQL日志
  • 如何驯化生成式AI,从提示工程 Prompt Engineering 开始
  • Day939.如何小步安全地升级数据库框架 -系统重构实战
  • 银行数字化转型导师坚鹏:ChatGPT解密与银行应用案例
  • 鸟哥的Linux私房菜 学习 Shell Scripts
  • 【CSS】实现梯形
  • C语言实例:求一个整数的所有因数,创建各类三角形图案(代码+思路)
  • AB测试基本原理
  • t-SNE进行分类可视化