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

vue中防抖和節(jié)流的使用方法

 更新時(shí)間:2021年08月05日 15:01:41   作者:楊柒柒柒呀  
防抖和節(jié)流是我們?cè)陂_發(fā)過程中常用優(yōu)化性能的方式,可以減少不必要的計(jì)算,不浪費(fèi)資源,只在適合的時(shí)候再進(jìn)行觸發(fā)計(jì)算,這篇文章主要給大家介紹了關(guān)于vue中防抖和節(jié)流使用的相關(guān)資料,需要的朋友可以參考下

前言

在一個(gè)電影項(xiàng)目中,我想在電影的列表中,保存下拉的當(dāng)前位置,防止你切換頁面后,再切換回當(dāng)前的電影列表頁,他就又回到電影的第一條數(shù)據(jù)。

這時(shí)候,我不想每次只要滑動(dòng)一點(diǎn),就保存當(dāng)前位置,我想隔一段時(shí)間,保存一次,這時(shí)候,就可以使用防抖和節(jié)流。

概念

說白了, 防抖節(jié)流就是使用定時(shí)器 來實(shí)現(xiàn)我們的目的。

防抖(debounce):

在事件被觸發(fā)n秒后再執(zhí)行回調(diào),如果在這n秒內(nèi)又被觸發(fā),則重新計(jì)時(shí)。

典型的案例就是輸入框搜索:輸入結(jié)束后n秒才進(jìn)行搜索請(qǐng)求,n秒內(nèi)又輸入的內(nèi)容,則重新計(jì)時(shí)。

節(jié)流(throttle):

規(guī)定在一個(gè)單位時(shí)間內(nèi),只能觸發(fā)一次函數(shù),如果這個(gè)單位時(shí)間內(nèi)觸發(fā)多次函數(shù),只有一次生效。

典型的案例就是鼠標(biāo)不斷點(diǎn)擊觸發(fā),規(guī)定在n秒內(nèi)多次點(diǎn)擊只生效一次。

防抖

定義

頻繁操作防止抖動(dòng),在操作后 n 秒內(nèi)不操作,才觸發(fā)事件,若繼續(xù)操作,則重新計(jì)時(shí)

使用場(chǎng)景

  • 輸入框輸入
  • 縮放resize

代碼

// utils.js
// immediate 是否開始立即執(zhí)行
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)
    }
}

方法二:寫在當(dāng)前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)      
},

節(jié)流

定義

頻繁操作稀釋函數(shù)執(zhí)行,頻繁操作時(shí),每隔n秒才觸發(fā)一次

使用場(chǎng)景

  1. 鼠標(biāo)點(diǎn)擊,mousedown,mousemove單位時(shí)間只執(zhí)行一次
  2. 滾動(dòng)事件,懶加載、滾動(dòng)加載、加載更多或監(jiān)聽滾動(dòng)條位置
  3. 防止高頻點(diǎn)擊提交,防止表單重復(fù)提交

代碼

// 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中使用

使用方法與防抖相同

總結(jié)

到此這篇關(guān)于vue中防抖和節(jié)流使用的文章就介紹到這了,更多相關(guān)vue防抖和節(jié)流使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue簡(jiǎn)單的store詳解

    vue簡(jiǎn)單的store詳解

    這篇文章主要介紹了詳解vue簡(jiǎn)單的store,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-10-10
  • vue2項(xiàng)目中全局封裝axios問題

    vue2項(xiàng)目中全局封裝axios問題

    這篇文章主要介紹了vue2項(xiàng)目中全局封裝axios問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue的props父?jìng)髯拥氖纠a

    Vue的props父?jìng)髯拥氖纠a

    這篇文章主要介紹了Vue的props父?jìng)髯拥氖纠a,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Vue3中引入SCSS和LESS依賴的基本步驟和注意事項(xiàng)

    Vue3中引入SCSS和LESS依賴的基本步驟和注意事項(xiàng)

    我們項(xiàng)目開發(fā)中經(jīng)常遇到樣式里面會(huì)使用less和scss寫法, less,scss和stylus都是css的預(yù)處理器,這篇文章主要給大家介紹了關(guān)于Vue3中引入SCSS和LESS依賴的基本步驟和注意事項(xiàng),需要的朋友可以參考下
    2024-05-05
  • vue2 router 動(dòng)態(tài)傳參,多個(gè)參數(shù)的實(shí)例

    vue2 router 動(dòng)態(tài)傳參,多個(gè)參數(shù)的實(shí)例

    下面小編就為大家?guī)硪黄獀ue2 router 動(dòng)態(tài)傳參,多個(gè)參數(shù)的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • Vue中Video標(biāo)簽播放解析后短視頻去水印無響應(yīng)解決

    Vue中Video標(biāo)簽播放解析后短視頻去水印無響應(yīng)解決

    這篇文章主要為大家介紹了Vue中使用Video標(biāo)簽播放?<解析后的短視頻>去水印視頻無響應(yīng)的解決方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • Vue中對(duì)數(shù)組和對(duì)象進(jìn)行遍歷和修改方式

    Vue中對(duì)數(shù)組和對(duì)象進(jìn)行遍歷和修改方式

    這篇文章主要介紹了Vue中對(duì)數(shù)組和對(duì)象進(jìn)行遍歷和修改方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 簡(jiǎn)單了解vue.js數(shù)組的常用操作

    簡(jiǎn)單了解vue.js數(shù)組的常用操作

    這篇文章主要介紹了簡(jiǎn)單了解vue.js數(shù)組的常用操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • element?實(shí)現(xiàn)導(dǎo)航欄收起展開功能及思路

    element?實(shí)現(xiàn)導(dǎo)航欄收起展開功能及思路

    這篇文章主要介紹了element?實(shí)現(xiàn)導(dǎo)航欄收起展開功能,實(shí)現(xiàn)思路先給 el-menu加上 :collapse="isCollapse" 屬性,這個(gè)屬性也是 element 上的一個(gè)參數(shù),意思為是否開啟折疊動(dòng)畫,在 data 中定義 isCollapse ,用 true 和 false 控制展開與收起,需要的朋友可以參考下
    2023-01-01
  • vue實(shí)現(xiàn)倒計(jì)時(shí)功能

    vue實(shí)現(xiàn)倒計(jì)時(shí)功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)倒計(jì)時(shí)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03

最新評(píng)論