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包裹的方法,也不能使用箭头函数。

相关推荐
STUPID MAN18 小时前
Linux使用tomcat发布vue打包的dist或html
linux·vue.js·tomcat·html
尽兴-18 小时前
[特殊字符] 微前端部署实战:Nginx 配置 HTTPS 与 CORS 跨域解决方案(示例版)
前端·nginx·https·跨域·cors·chrom
JIngJaneIL19 小时前
助农惠农服务平台|助农服务系统|基于SprinBoot+vue的助农服务系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·助农惠农服务平台
云外天ノ☼19 小时前
待办事项全栈实现:Vue3 + Node.js (Koa) + MySQL深度整合,构建生产级任务管理系统的技术实践
前端·数据库·vue.js·mysql·vue3·koa·jwt认证
gihigo199819 小时前
使用JavaScript和Node.js构建简单的RESTful API
javascript·node.js·restful
一位搞嵌入式的 genius19 小时前
前端实战开发(三):Vue+Pinia中三大核心问题解决方案!!!
前端·javascript·vue.js·前端实战
塞纳河畔的歌19 小时前
保姆级教程 | 麒麟系统安装Edge浏览器
前端·edge
前端.火鸡19 小时前
Vue 3.5 新API解析:响应式革命、SSR黑科技与开发体验飞跃
javascript·vue.js·科技
多睡觉觉19 小时前
数据字典:从"猜谜游戏"到"优雅编程"的奇幻之旅
前端
嗝屁小孩纸19 小时前
开发集成热门小游戏(vue+js)
前端·javascript·vue.js