最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue項目使用lodash節(jié)流防抖函數(shù)問題解決方案

 更新時間:2023年10月09日 08:45:04   作者:自信可改變未來  
在lodash函數(shù)工具庫中,防抖 _.debounce 和節(jié)流 _.throttle 函數(shù)在一些頻繁觸發(fā)的事件中比較常用,這篇文章主要介紹了vue項目使用lodash節(jié)流防抖函數(shù)問題與解決,需要的朋友可以參考下

背景

在lodash函數(shù)工具庫中,防抖 _.debounce 和節(jié)流 _.throttle 函數(shù)在一些頻繁觸發(fā)的事件中比較常用。

防抖函數(shù) _.debounce(func, [wait=0], [options=])

創(chuàng)建一個 debounced(防抖動)函數(shù),該函數(shù)會從上一次被調(diào)用后,延遲 wait 毫秒后調(diào)用 func 方法。

參數(shù)

  • func (Function): 要防抖動的函數(shù)。
  • [wait=0] (number): 需要延遲的毫秒數(shù)。
  • [options=] (Object): 選項對象。
  • [options.leading=false] (boolean): 指定在延遲開始前調(diào)用。
  • [options.maxWait] (number): 設(shè)置 func 允許被延遲的最大值。
  • [options.trailing=true] (boolean): 指定在延遲結(jié)束后調(diào)用。

返回

  • (Function): 返回 debounced(防抖動)函數(shù)。

節(jié)流函數(shù) _.throttle(func, [wait=0], [options=])

創(chuàng)建一個節(jié)流函數(shù),在 wait 毫秒內(nèi)最多執(zhí)行 func 一次的函數(shù)。

參數(shù)

  • func (Function): 要節(jié)流的函數(shù)。
  • [wait=0] (number): 需要節(jié)流的毫秒。
  • [options=] (Object): 選項對象。
  • [options.leading=true] (boolean): 指定調(diào)用在節(jié)流開始前。
  • [options.trailing=true] (boolean): 指定調(diào)用在節(jié)流結(jié)束后。

返回

(Function): 返回 throttled(節(jié)流)的函數(shù)。

在vue中使用防抖節(jié)流函數(shù)的問題

踩坑1

防抖節(jié)流函數(shù)實際上起到一個“稀釋”的作用,在vue項目中我們可能會這樣寫(節(jié)流為例)。

<template>
    <div>
        <button @click="add_throttle">加1</button>
        <h1>{{ number }}</h1>
    </div>
</template>
<script>
import { throttle } from 'lodash';
export default {
    data() {
        return {
            number: 1
        };
    },
    methods: {
        // add函數(shù)做節(jié)流處理
        add_throttle: throttle(this.add, 1000),
        add() {
            this.number++;
        }
    },
};
</script>

然后我們信心滿滿地F12打開控制臺……

上面說 add 這玩意兒 undefined 了。

這其實是 this 的指向問題。實際上這里的 this 并不是vue實例(至于是什么,往下看你就知道了[doge]),所以自然不存在 add() 方法了。

踩坑2

既然直接使用 this.add() 不成,那我們換個思路,把 this.add() 放在函數(shù)里呢?

methods: {
    // 做節(jié)流處理
    add_throttle: throttle(() => {
        this.add();
    }, 1000),
    add() {
        this.number++;
    }
}

然后,自信滿滿地再次打開控制臺……

第一眼,誒,沒報錯,于是點擊按鈕……

梅開二度……

其實還是 this 的指向問題。我們知道箭頭函數(shù)是沒有 this 的,所以這里的 this 相當于踩坑1里的 this ,讓我們打印下,揭開它的廬山真面目。

methods: {
    // 做節(jié)流處理
    add_throttle: throttle(() => {
        console.log(this);
    }, 1000),
    add() {
        this.number++;
    }
}

好家伙,原來這里的 this 本身就是 undefined 。

解決

既然是this的指向問題,那么只要保證 this 指向vue實例就行了,箭頭函數(shù)換成聲明式函數(shù)。

methods: {
    // 做節(jié)流處理
    add_throttle: throttle(function () {
        this.add();
    }, 1000),
    add() {
        this.number++;
    }
}

結(jié)果很nice。

至于為什么,大概是lodash的 _.debounce 函數(shù)對this做了一些處理( _.throttle 函數(shù)本質(zhì)還是調(diào)用了 _.debounce 函數(shù)),有興趣的小伙伴兒可以看看_.debounce的源碼。

到此這篇關(guān)于vue項目使用lodash節(jié)流防抖函數(shù)問題與解決的文章就介紹到這了,更多相關(guān)vue使用lodash節(jié)流防抖函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue3模塊創(chuàng)建runtime-dom源碼解析

    vue3模塊創(chuàng)建runtime-dom源碼解析

    這篇文章主要為大家介紹了vue3模塊創(chuàng)建runtime-dom源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Vue 獲取數(shù)組鍵名的方法

    Vue 獲取數(shù)組鍵名的方法

    本篇文章主要介紹了Vue 獲取數(shù)組鍵名的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 解決項目vite1.0升級到2.0打包遇到Some chunks are larger問題

    解決項目vite1.0升級到2.0打包遇到Some chunks are larger問題

    本文主要介紹了解決項目vite1.0升級到2.0打包遇到Some chunks are larger問題,文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue?contextmenujs鼠標右鍵菜單高度不夠顯示不全的問題及解決方法

    vue?contextmenujs鼠標右鍵菜單高度不夠顯示不全的問題及解決方法

    這篇文章主要介紹了使用vue-contextmenujs鼠標右鍵菜單時,當高度不夠時顯示不全的問題,大家需要注意本文給提供的解決方案雖然能夠解決現(xiàn)有問題,但是如果組件升級了,想要使用最新升級后的組件,還要再次修改代碼,需要的朋友可以參考下
    2022-07-07
  • Vue.js系列之項目搭建(1)

    Vue.js系列之項目搭建(1)

    今天要講講Vue2.0了。最近將公司App3.0用vue2.0構(gòu)建了一個web版,因為是第一次使用vue,而且一開始使用的時候2.0出來一個月不到,很多坑都是自己去踩的,現(xiàn)在項目要上線了,所以記錄一些過程
    2017-01-01
  • Vue3中#default=“scope”的使用

    Vue3中#default=“scope”的使用

    在Vue3中,我們經(jīng)常會遇到需要處理列表渲染的情況,Vue3引入了一種新的語法,即#default=“scope”,本文就來介紹一下Vue3中#default=“scope”的使用,感興趣的可以了解一下
    2023-10-10
  • Vue解決移動端彈窗滾動穿透問題

    Vue解決移動端彈窗滾動穿透問題

    這篇文章主要介紹了Vue解決移動端彈窗滾動穿透問題的方法,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-12-12
  • 解決VUE項目在IIS部署出現(xiàn):Uncaught SyntaxError: Unexpected token < 報錯

    解決VUE項目在IIS部署出現(xiàn):Uncaught SyntaxError: Unexpected&n

    這篇文章介紹了解決VUE項目在IIS部署出現(xiàn):Uncaught SyntaxError: Unexpected token < 報錯的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • vuejs實現(xiàn)標簽選項卡動態(tài)更改css樣式的方法

    vuejs實現(xiàn)標簽選項卡動態(tài)更改css樣式的方法

    這篇文章主要介紹了vuejs實現(xiàn)標簽選項卡-動態(tài)更改css樣式的方法,代碼分為html和js兩部分,需要的朋友可以參考下
    2018-05-05
  • element-ui?el-table表格固定表頭代碼示例

    element-ui?el-table表格固定表頭代碼示例

    Element-UI的el-table組件是一個非常強大的表格組件,它提供了多種常見的表格功能,如排序、篩選、分頁、自定義列模板等,這篇文章主要給大家介紹了關(guān)于element-ui?el-table表格固定表頭的相關(guān)資料,需要的朋友可以參考下
    2024-05-05

最新評論

都匀市| 武宣县| 安国市| 汉寿县| 台南县| 张北县| 政和县| 六安市| 广德县| 青田县| 乳山市| 苍南县| 霞浦县| 赤城县| 永寿县| 肥城市| 晋城| 玛曲县| 晴隆县| 洛扎县| 宜州市| 望城县| 石景山区| 黄大仙区| 东乡| 兰州市| 自治县| 柘荣县| 榆林市| 商城县| 务川| 广昌县| 澳门| 商洛市| 桓台县| 湟源县| 兴和县| 东安县| 苍梧县| 碌曲县| 阿克|