91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue中如何使用防抖和節流

發布時間:2021-08-05 18:02:55 來源:億速云 閱讀:434 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關vue中如何使用防抖和節流,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

概念

說白了, 防抖節流就是使用定時器 來實現我們的目的。

防抖(debounce):

在事件被觸發n秒后再執行回調,如果在這n秒內又被觸發,則重新計時。

典型的案例就是輸入框搜索:輸入結束后n秒才進行搜索請求,n秒內又輸入的內容,則重新計時。

節流(throttle):

規定在一個單位時間內,只能觸發一次函數,如果這個單位時間內觸發多次函數,只有一次生效。

典型的案例就是鼠標不斷點擊觸發,規定在n秒內多次點擊只生效一次。

防抖

定義

頻繁操作防止抖動,在操作后 n 秒內不操作,才觸發事件,若繼續操作,則重新計時

使用場景

  • 輸入框輸入

  • 縮放resize

代碼

// utils.js
// immediate 是否開始立即執行
function debounce(func, delay = 300, immediate = false) {
    let timer = null
    return function() {
        if (timer) {
            clearTimeout(timer)
        }
        if (immediate && !timer) {
            func.apply(this, arguments)
        }
        timer = setTimeout(() => {
         func.apply(this, arguments)
        }, delay)
    }
}

在vue中使用

方法一:寫在公共方法utils里引入

import { debounce } from 'utils'
methods: {
    appSearch:debounce(function(e.target.value){
        this.handleSearch(value)
    }, 1000),
    handleSearch(value) {
        console.log(value)
    }
}

方法二:寫在當前vue文件中

data: () => {
  return {
    debounceInput: () => {}
  }
},
methods: {
  showApp(value) {
    console.log('value', value)
  },
  debounce(func, delay = 300, immediate = false) {
    let timer = null
    return function() {
        if (timer) {
            clearTimeout(timer)
        }
        if (immediate && !timer) {
            func.apply(this, arguments)
        }
        timer = setTimeout(() => {
         func.apply(this, arguments)
        }, delay)
    }
  }
},
mounted() {
  this.debounceInput = this.debounce(this.showApp, 1000)      
},

節流

定義

頻繁操作稀釋函數執行,頻繁操作時,每隔n秒才觸發一次

使用場景

  1. 鼠標點擊,mousedown,mousemove單位時間只執行一次

  2. 滾動事件,懶加載、滾動加載、加載更多或監聽滾動條位置

  3. 防止高頻點擊提交,防止表單重復提交

代碼

// utils.js
function throttle (func, delay = 300) {    
    let prev = 0
    return function() {
        let now = Date.now()
        if ((now - prev) >= delay) {
            func.apply(this, arguments)
            prev = Date.now()
        }
    }
}

以上就是vue中如何使用防抖和節流,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

闽清县| 准格尔旗| 平果县| 海林市| 叙永县| 乐都县| 芒康县| 会理县| 宁德市| 奈曼旗| 丁青县| 淮南市| 临夏市| 湘潭县| 健康| 巴中市| 建德市| 延安市| 长垣县| 马关县| 南开区| 凌源市| 山东省| 安塞县| 汉阴县| 巨鹿县| 行唐县| 井陉县| 旬邑县| 丽江市| 汝南县| 突泉县| 禄丰县| 彭泽县| 冀州市| 石屏县| 云浮市| 神池县| 安龙县| 新化县| 汉中市|