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

vue3防抖函数封装与使用,以指令的形式使用

utils/debounce.js

/*** 防抖函数* @param {*} fn 函数* @param {*} delay 暂停时间* @returns */
export function debounce(fn, delay = 500) {let timer = nullreturn function (...args) {// console.log(arguments);// const args = Array.from(arguments)if (timer) {clearTimeout(timer)}timer = setTimeout(() => {fn.apply(this, args)}, delay)}}

main.js 定义全局化指令

import { createApp } from 'vue'
import App from './App.vue'
import { debounce } from './utils/debounce'const app = createApp(App)// 创建全局指令
app.directive('debounce', {mounted(el, binding) {const { value, arg } = bindingconst debouncedFn = debounce(value, arg)el.addEventListener('click', debouncedFn) // 将事件改为click},beforeUnmount(el, binding) {const { value } = bindingel.removeEventListener('click', value)}
})app.mount('#app')

指令的使用

<template><button v-debounce="handleInput" :delay="500">无参</button><button v-debounce="() => handleInput2(1, 2)" :delay="500">传参</button>
</template>
<script>export default{methods: {handleInput(){console.log('防抖指令的使用');},handleInput2(v1, v2){console.log('接收参数', v1,v2);},}}
</script>
http://www.lryc.cn/news/274846.html

相关文章:

  • Hive学习(13)lag和lead函数取偏移量
  • Centos Unable to verify the graphical display setup
  • Java 说一下 synchronized 底层实现原理?
  • nginx访问路径匹配方法
  • 偌依 项目部署及上线步骤
  • PHP特性知识点扫盲 - 上篇
  • Docker一键极速安装Nacos,并配置数据库!
  • 交换机04_远程连接
  • ES6定义一个类(函数内部定义属性,,原型定义方法 ), 实现继承?
  • 使用 Process Explorer 和 Windbg 排查软件线程堵塞案例分享
  • “智慧”千里眼助力水泵站
  • C++多态性——(5)运算符重载(第二节)
  • ES -极客学习
  • 【大厂秘籍】系列 - Java多线程面试题
  • vue实现画笔回放,canvas转视频播放功能
  • Docker中镜像的相关操作
  • [python]python利用pyaudio录制系统声音没有立体声混音怎么录制系统音频
  • 使用echarts的bmap配置项绘制区域轮廓遮罩
  • 第3章 【课后习题】(完整版)
  • redis安装与配置
  • kotlin first/last/indexOf/elementAt
  • 计算机网络——网络中要解决的问题
  • 初识STL
  • 程序员副业之无人直播助眠
  • imazing破解版百度云2.17.3(附激活许可证下载)
  • VS+QT五子棋游戏开发
  • SpringBoot中动态注册接口
  • CSS 实现两个圆圈重叠部分颜色不同
  • 【数据库系统概念】第7-14章集合
  • Kibana