Debounce function in Nuxt

Nuxt
debounce
vue-debounce

debounce function常用於處理事件觸發後的call back function


當一項監聽事件被快速連續觸發時,為避免接著連續執行N個call back function


此時debounce就派上用場了!


常見好用的js utility library 「Lodash」亦提供了debounce function


為減低專案import的外部資源,我選擇不使用lodash,改用vue-debounce

(其實原本有先嘗試單一引入lodash.debounce,但最後整合失敗了...)


安裝

npm i vue-debounce --save


各種使用方法在vue-debounce內有指引


我採用最簡單的「Using Just Debounce」,程式碼如下

<script>
import { debounce } from 'vue-debounce'
export default {
methods: {
    debounceTextChange: debounce(function () {
      //don't use arrow function
      this.$emit('text-change', this.editedContent)
    }, 3000),
  }
}
</script>


寫法同常見的debounce function,為

debounce(call_back_func, time-ms)


提醒一點,在call_back_func撰寫上,不要使用arrow function表達


會造成this Object抓不到Ovo


© 2021 Hamsterism. All rights reserved github