vue项目中使用节流throttle 和 防抖debounce

一、节流和防抖的定义

节流:频繁输入、频繁操作的时候,保持一定频率连续触发,比如 scroll 事件、click 事件。

防抖:频繁输入、频繁操作的时候,在最后才触发事件处理函数,比如 input 输入事件。

关于节流和防抖的更多细节,本篇文章不做重点介绍,想了解可以阅读 《防抖debounce和节流throttle》

二、在 vue项目 中使用防抖和节流

在 vue 项目中,想要给 methods 中的某个方法 fn 增加节流或防抖,应该如何实现?

以节流为例(防抖功能类似):

1、节流函数 throttle 封装

公共类 utils.js 中封装节流函数 throttle,方便全局调用

javascript 复制代码
export const throttle = (fn, delay = 100) => {
	let timer = null
	return function () {
		if (timer) return
		timer = setTimeout(() => {
			fn.apply(this, arguments)
			timer = null
		}, delay)
	}
}

2、引入并使用节流函数 throttle

在需要的页面引入节流函数,使用节流函数包裹要进行节流的方法 fn

javascript 复制代码
在这里插入代码片
import { throttle } from '@/utils/utils.js'

methods: {
	fn: throttle(function() {
		// 业务逻辑
	}, 200)
}

注意:

在vue中,methods中的方法不可以使用箭头函数,

因为箭头函数本身没有this,箭头函数的this会指向父级的this,

如果使用了箭头函数,fn中的this会指向父级的this(window),不再指向vue实例,

同理,使用节流函数throttle包裹的方法,也不能使用箭头函数。

相关推荐
XZ探长5 分钟前
基于 Trae Solo 移动办公修复 Vue3 前端服务问题
前端
逍遥德8 分钟前
AI时代,计算机专业大学生学习指南
java·javascript·人工智能·学习·ai编程
蝎子莱莱爱打怪12 分钟前
Claude Code 省 Token 小妙招:RTK + Caveman 组合拳
前端·人工智能·后端
Rkgua21 分钟前
JS中模拟函数重载的使用
javascript·jquery
竹林81826 分钟前
用 wagmi v2 和 Next.js 14 硬扛 NFT 市场前端:从合约调用失败到批量上架,我踩了这些坑
javascript·next.js
Momo__40 分钟前
Vue 3.6 Vapor Mode:跳过虚拟 DOM,性能极致优化
前端·vue.js
少年白马醉春风丶40 分钟前
从零构建 AIGC 无限画布:AIGCCanvasFlow 技术全解析
前端·后端·aigc
OpenTiny社区44 分钟前
生成式 UI 藏大招!看似露营案例,实则电商集成 GenUI SDK 干货
前端·ai编程·交互设计
Awu12271 小时前
🍎Vue官方Skills深度解读:那些被悄悄藏起来的宝藏
前端·aigc·claude
小小前端仔LC1 小时前
第五篇:前端任务状态管理与实时反馈 (SSE 客户端篇)
前端