您好,登錄后才能下訂單哦!
vue 中怎么使用防抖和節流防止重復點擊,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
/** * 函數防抖 (只執行最后一次點擊)
* @param fn
* @param delay * @returns {Function} * @constructor */export const Debounce = (fn, t) => { let delay = t || 500; let timer; console.log(fn) console.log(typeof fn) return function () { let args = arguments; if(timer){ clearTimeout(timer); } timer = setTimeout(() => { timer = null; fn.apply(this, args); }, delay); }}; /** * 函數節流 * @param fn * @param interval * @returns {Function} * @constructor */export const Throttle = (fn, t) => { let last; let timer; let interval = t || 500; return function () { let args = arguments; let now = +new Date(); if (last && now - last < interval) { clearTimeout(timer); timer = setTimeout(() => { last = now; fn.apply(this, args); }, interval); } else { last = now; fn.apply(this, args); } }};
用法:
methods:{ getAliyunData:Throttle(function(){ ... },1000),}
案例2:
防抖和節流是我們在開發過程中常用優化性能的方式
在 vue 中怎么使用:
1、在公共方法中(如 public.js 中),加入函數防抖和節流方法
// 防抖export function _debounce(fn, delay) { var delay = delay || 200; var timer; return function () { var th = this; var args = arguments; if (timer) { clearTimeout(timer); } timer = setTimeout(function () { timer = null; fn.apply(th, args); }, delay); };}// 節流export function _throttle(fn, interval) { var last; var timer; var interval = interval || 200; return function () { var th = this; var args = arguments; var now = +new Date(); if (last && now - last < interval) { clearTimeout(timer); timer = setTimeout(function () { last = now; fn.apply(th, args); }, interval); } else { last = now; fn.apply(th, args); } }}
2、在需要使用的組件引用
import { _debounce } from "@/utils/public";
3、在 methods 中使用
methods: { // 改變場數 changefield: _debounce(function(_type, index, item) { // do something ... }, 200) }
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。