【Vue】VUE组建防抖

it2026-01-29  5

防抖原理

产生原因:当持续触发某事件时,一定时间间隔内没有再触发事件时,事件处理函数才会执行一次,如果设定的时间间隔到来之前,又一次触发了事件,就重新开始延时。简单来说就是对点击事件做了一个延时处理。

防抖JS实现方法

防抖主要运用的是闭包原理,触发点击事件,调用debounce方法,传入参数为需要防抖的方法和延时时间,retrun返回一个方法,settime时间到再触发 .call(this, arges)执行方法。

// 防抖函数 // 参数1:触发的方法 // 参数2:等待时间 function debounce(fun, time) { let timer return (arges) => { clearInterval(timer) timer = setTimeout(() => { // 触发该方法 fun.call(this, arges) }, time) } }, // 点击事件 onClick() { let setTimeMsg = this.debounce(this.getMsg(), 500) setTimeMsg("参数可选,如果是axios请求,直接触发axois方法") }, // 请求 getMsg(arges) { getResource(1).then(response => { }) },

VUE防抖组建

<template> <div> <Button :type="btn_type" @click="onClickDebounce">btn_txt</Button> </div> </template> <script> export default { props: { // 按钮显示文字 btn_txt: { type: String, default: '' }, // 防抖时间 debounce_timeout: { type: Number, default: 500 }, // 按钮type btn_type: { type: String, default: 'primary' } }, methods: { // 防抖 闭包返回方法 onClickDebounce() { let timer if (timer !== null) clearInterval(timer) timer = setTimeout(() => { // 触发父组建的点击事件 this.$emit('on-click') }, this.debounce_timeout) } } } </script> <style scoped> </style>
最新回复(0)