44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
|
|
/**
|
|||
|
|
* 防抖混入
|
|||
|
|
* 为Vue组件提供防抖点击功能
|
|||
|
|
*/
|
|||
|
|
import { debounceClick, createDebounceMethod, createDebounceMethods, clearAllDebounceStates } from '../utils/debounce.js';
|
|||
|
|
|
|||
|
|
export default {
|
|||
|
|
methods: {
|
|||
|
|
/**
|
|||
|
|
* 创建防抖点击方法
|
|||
|
|
* @param {string} methodName - 方法名
|
|||
|
|
* @param {number} delay - 防抖延迟时间(毫秒),默认1000ms
|
|||
|
|
*/
|
|||
|
|
$debounceClick(methodName, delay = 1000) {
|
|||
|
|
createDebounceMethod(this, methodName, delay);
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 批量创建防抖方法
|
|||
|
|
* @param {Array} methods - 方法名数组
|
|||
|
|
* @param {number} delay - 防抖延迟时间(毫秒),默认1000ms
|
|||
|
|
*/
|
|||
|
|
$debounceMethods(methods, delay = 1000) {
|
|||
|
|
createDebounceMethods(this, methods, delay);
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 创建防抖函数
|
|||
|
|
* @param {Function} func - 要防抖的函数
|
|||
|
|
* @param {number} delay - 防抖延迟时间(毫秒),默认1000ms
|
|||
|
|
* @param {string} key - 防抖标识符
|
|||
|
|
* @returns {Function} 防抖后的函数
|
|||
|
|
*/
|
|||
|
|
$createDebounce(func, delay = 1000, key = null) {
|
|||
|
|
return debounceClick(func.bind(this), delay, key);
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
beforeDestroy() {
|
|||
|
|
// 组件销毁时清理防抖状态
|
|||
|
|
clearAllDebounceStates();
|
|||
|
|
}
|
|||
|
|
};
|