uniapp实现事件级防抖

背景:

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

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

javascript 复制代码
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)
	}
}

使用方式

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

javascript 复制代码
import { Debounce } from "@/utils/debounce.js";

页面使用

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

注意: 不要使用箭头函数 () => {}, 会导致this获取不到

如果有更合理或者更好的防抖方法,希望可以多多指教

相关推荐
薛端阳24 分钟前
OpenClaw的架构优化思路杂想
前端
hi大雄25 分钟前
我的 2025 — 名为《开始的勇气》🌱
前端·年终总结
OpenTiny社区26 分钟前
TinyRobot:基于 OpenTiny Design 的企业级 AI 交互组件框架
前端·vue.js·ai编程
用户31532477954527 分钟前
Tailwind CSS 学习手册
前端·css
踩着两条虫33 分钟前
AI 驱动的 Vue3 应用开发平台 深入探究(三):核心概念之引擎架构与生命周期
前端·vue.js·ai编程
发际线向北36 分钟前
0x00 Android 渲染机制解析
前端
_Eleven37 分钟前
Tiptap 完全使用指南
前端·vue.js·github
小蜜蜂dry42 分钟前
nestjs学习 - 中间件(Middleware)
前端·nestjs
像我这样帅的人丶你还1 小时前
2026前端技术从「夯」到「拉」
前端
烟雨落金城1 小时前
初识Electron,谈谈感悟
前端