欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文教你如何一個Vue指令搞定函數防抖

 更新時間:2024年02月27日 10:26:32   作者:JYeontu  
防抖(Debounce)在前端開發(fā)中是一種常用的技術,它的作用是限制某個操作在短時間內的頻繁觸發(fā),下面我們就來看看如何一個Vue指令搞定函數防抖吧

說在前面

防抖(Debounce)在前端開發(fā)中是一種常用的技術,它的作用是限制某個操作在短時間內的頻繁觸發(fā),只有在一定的間隔時間內才執(zhí)行相應的操作。

什么是防抖

函數防抖 方法是一個函數,它的執(zhí)行被延遲了 t 毫秒,如果在這個時間窗口內再次調用它,它的執(zhí)行將被取消。你編寫的防抖函數也應該接收傳遞的參數。

例如,假設 t = 50ms ,函數分別在 30ms 、 60ms 和 100ms 時調用。前兩個函數調用將被取消,第三個函數調用將在 150ms 執(zhí)行。如果改為 t = 35ms ,則第一個調用將被取消,第二個調用將在 95ms 執(zhí)行,第三個調用將在 135ms 執(zhí)行。

效果展示

實現原理

防抖函數實現步驟

  • 1、當需要執(zhí)行某個操作時,首先設置一個定時器。
  • 2、如果在規(guī)定的時間間隔內再次觸發(fā)了該操作,則清除之前的定時器。
  • 3、重新設置一個新的定時器,以確保在最后一次觸發(fā)操作后的一段時間內不再觸發(fā)操作。
  • 4、最終在最后一次觸發(fā)操作后的時間間隔結束時執(zhí)行相應的操作。

基本的防抖函數示例

function debounce(func, delay) {
  let timer;

  return function() {
    const context = this;
    const args = arguments;

    clearTimeout(timer);
    timer = setTimeout(() => {
      func.apply(context, args);
    }, delay);
  };
}

// 創(chuàng)建一個防抖函數
const debouncedFunction = debounce(() => {
  console.log('Debounced function is executed');
}, 300); // 設置延遲時間為300毫秒

// 在需要防抖的事件中調用防抖函數
window.addEventListener('scroll', debouncedFunction);

這種基礎的寫法應該大部分同學都可以很輕松的寫出來,這里就不過多贅述了,主要看下怎么將其封裝成一個vue指令來使用。

封裝成vue指令

指令代碼

export default {
    inserted: function (el, binding) {
        const arg = binding.arg || 500;
        let timer;
        el.addEventListener("input", (e) => {
            clearTimeout(timer);
            timer = setTimeout(() => {
                binding.value(e);
            }, arg); // 設置延遲時間,單位為毫秒
        });
    },
};

這段代碼定義了一個自定義指令對象,其中的 inserted 方法會在指令綁定到元素上時被調用。在這里,我們將該指令綁定到輸入框上。

當輸入框觸發(fā)輸入事件(input)時,會執(zhí)行回調函數。在回調函數中,通過 clearTimeout 清除之前的定時器,并重新設置一個新的定時器。這樣做的目的是確保在用戶連續(xù)輸入時只有最后一次輸入的內容被處理。

在新的定時器中,會等待一段時間(由 arg 參數指定,單位為毫秒),然后執(zhí)行 binding.value(e),也就是調用傳入指令的值的函數并傳遞事件對象 e。這樣就實現了在輸入框輸入時應用防抖函數的效果。

指令使用

<input
    v-JDebounce:1000="handleInput"
    class="input-content"
/>

methods: {
    handleInput(event) {
        const value = event.target.value;
        if (value === "") {
            this.inputContent = "";
            return;
        }
        this.inputContent += `\n輸入了:${value}`;
    },
}
  • v-JDebounce:1000:這是一個自定義指令的綁定,JDebounce 是指令的名稱,1000 是指令參數,表示延遲時間為1000毫秒。
  • handleInput:這是一個函數名,用于處理輸入框的輸入事件。

組件庫

組件文檔

目前該組件也已經收錄到我的組件庫,組件文檔地址如下: jyeontu.xyz/jvuewheel/#/JDebounceView

組件內容

組件庫中還有許多好玩有趣的組件,如:

  • 懸浮按鈕
  • 評論組件
  • 詞云
  • 瀑布流照片容器
  • 視頻動態(tài)封面
  • 3D輪播圖
  • web桌寵
  • 貢獻度面板
  • 拖拽上傳
  • 自動補全輸入框
  • 圖片滑塊驗證

等等……

組件庫源碼

組件庫已開源到gitee,有興趣的也可以到這里看看:gitee.com/zheng_yongtao/jyeontu-component-warehouse

到此這篇關于一文教你如何一個Vue指令搞定函數防抖的文章就介紹到這了,更多相關Vue函數防抖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue Element前端應用開發(fā)之根據ABP后端接口實現前端展示

    Vue Element前端應用開發(fā)之根據ABP后端接口實現前端展示

    本篇著重介紹基于ABP后端接口信息,實現對前端界面的開發(fā)工作。
    2021-05-05
  • 手動掛載Vue3.0組件到DOM節(jié)點的方法

    手動掛載Vue3.0組件到DOM節(jié)點的方法

    在VUE應用中,經常會使用一些非vue實現的js庫,這些js庫可能要求外部傳入一些界面DOM節(jié)點,本文主要介紹了手動掛載Vue3.0組件到DOM節(jié)點的方法,感興趣的可以了解一下
    2024-08-08
  • Vue之使用mockjs生成模擬數據案例詳解

    Vue之使用mockjs生成模擬數據案例詳解

    這篇文章主要介紹了Vue之使用mockjs生成模擬數據案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • uni-app中app和webview的h5通信簡單步驟

    uni-app中app和webview的h5通信簡單步驟

    這篇文章主要介紹了如何在nvue頁面中使用webview組件,并詳細介紹了如何在h5項目中安裝和配置npmiy_uniwebview插件,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • 詳解vuex中mutations方法的使用與實現

    詳解vuex中mutations方法的使用與實現

    這篇文章主要為大家詳細介紹了vuex中mutations方法的使用與實現的相關知識,文中的示例代碼簡潔易懂,具有一定的學習價值,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-11-11
  • vue3?ts編寫echart是tooltip無法展示的解決

    vue3?ts編寫echart是tooltip無法展示的解決

    這篇文章主要介紹了vue3?ts編寫echart是tooltip無法展示的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue頁面使用阿里oss上傳功能的實例(一)

    vue頁面使用阿里oss上傳功能的實例(一)

    本篇文章主要介紹了vue頁面使用阿里oss上傳功能的實例(一),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Vue項目優(yōu)化打包之前端必備加分項

    Vue項目優(yōu)化打包之前端必備加分項

    相信現在很多人都是用Vue做過了各種項目,但是項目代碼做完和上線并不代表這結束,還有上線以后的優(yōu)化也是很重要的一點,這篇文章主要給大家介紹了關于Vue項目優(yōu)化打包的相關資料,需要的朋友可以參考下
    2021-09-09
  • vue中動態(tài)select的使用方法示例

    vue中動態(tài)select的使用方法示例

    這篇文章主要介紹了vue中動態(tài)select的使用方法,結合實例形式分析了vue.js使用動態(tài)select創(chuàng)建下拉菜單相關實現技巧與操作注意事項,需要的朋友可以參考下
    2019-10-10
  • Vue 框架之動態(tài)綁定 css 樣式實例分析

    Vue 框架之動態(tài)綁定 css 樣式實例分析

    這篇文章主要介紹了Vue 框架之動態(tài)綁定 css 樣式的方法,本文通過分享小實例給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11

最新評論