uniapp实现事件级防抖

背景:

uniapp项目中所有页面跳转都会触发多次点击事件,导致页面排版错乱或其他问题

在utils文件夹下创建debounce.js文件

export const Debounce = (fn, wait) => {
	let delay = wait || 500
	let timer
	return function() {
		let args = arguments;
		if (timer) {
			clearTimeout(timer)
		}

		let callNow = !timer
		timer = setTimeout(() => {
			timer = null
		}, delay)
		if (callNow) fn.apply(this, args)
	}
}

使用方式

在需要使用防抖的页面引入方法

import { Debounce } from "@/utils/debounce.js";

页面使用

// 原方法
methodName(type) {
	console.log(type)
}
// 修改后方法
methodName: Debounce(function(type) {
	// 逻辑代码
	console.log(type)
}, 1000),

注意: 不要使用箭头函数 () => {}, 会导致this获取不到
如果有更合理或者更好的防抖方法,希望可以多多指教

相关推荐

  1. uniapp实现事件

    2024-04-14 06:24:01       17 阅读
  2. 手写实现

    2024-04-14 06:24:01       8 阅读
  3. vue3以指令的形式使用事件

    2024-04-14 06:24:01       38 阅读
  4. CSS实现点击

    2024-04-14 06:24:01       20 阅读
  5. 精简版节流实现

    2024-04-14 06:24:01       18 阅读
  6. uniapp函数debounce的使用

    2024-04-14 06:24:01       6 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-14 06:24:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-14 06:24:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-14 06:24:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-14 06:24:01       18 阅读

热门阅读

  1. 单链表C语言实现

    2024-04-14 06:24:01       22 阅读
  2. mamba 模型对 gpgpu 体系结构提出的新挑战

    2024-04-14 06:24:01       35 阅读
  3. LogMiner redo log

    2024-04-14 06:24:01       23 阅读
  4. apache-zookeeper-3.8.1单机安装

    2024-04-14 06:24:01       20 阅读
  5. Nginx set content type

    2024-04-14 06:24:01       19 阅读
  6. Debian安装和基本使用

    2024-04-14 06:24:01       14 阅读
  7. C#面:介绍 ArrayList 与 Array 的区别

    2024-04-14 06:24:01       15 阅读
  8. 委托 lambda linq之间的演变过程

    2024-04-14 06:24:01       12 阅读
  9. C#面:介绍 Hashtable 和 Dictionary的区别

    2024-04-14 06:24:01       14 阅读
  10. Android 14.0 USB鼠标右键改成返回键的功能实现

    2024-04-14 06:24:01       13 阅读
  11. 打不动的蓝桥杯

    2024-04-14 06:24:01       12 阅读