国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Vue自定義指令封裝節流函數的方法示例

2024-05-06 15:32:50
字體:
來源:轉載
供稿:網友

節流函數是web前端開發中經常用到的一個開發技巧,在input實時搜索,滾動事件等,為了避免過多消耗性能,我們都會使用節流函數.在《JavaScript高級程序設計》一書中有這樣的一個例子:

function throttle (method, context) {  clearTimeout((method.tId))  method.tId = setTimeout(function () {   method.call(context)  }, 100) } function resizeDiv () {  var div = document.getElementById('myDiv')  div.style.height = div.offsetWidth + 'px' } window.onresize = function () {  throttle(resizeDiv) }

這個就是很典型的函數節流的應用,不多解釋,本文通過vue的自定義指令封裝類似的方法.

 <template> <div>  <input   type="text"   v-model="text"   v-debounce="search"  > </div></template><script> export default {  name: 'debounce',  data () {   return {    msg: 'Welcome to Your Vue.js App',    text: '',    count: 1   }  },  directives: {   debounce: {    inserted: function (el, binding) {     let timer     el.addEventListener('keyup', () => {      if (timer) {       clearTimeout(timer)      }      timer = setTimeout(() => {       binding.value()      }, 300)     })    }   }  },  methods: {   search () {   // 實際要進行的操作 axios.get('')之類的    this.count++    console.log('count is:' + this.count)   }  } }</script>

以上代碼實現了一個實時搜索類的函數節流,通過vue自定義指令v-debounce實現.原本,如果我們想做一個實施搜索,那么會直接用@keyup=search,這樣就會非常耗性能,鍵盤敲一下,就會調用一次search事件,如果是ajax請求,那么會非常不友好,所以通過v-debounce,則可以在鍵盤連續敲擊的時候組織運行,停留300毫秒才執行.

通過vue的自定義指令,還可以將其掛載在全局,那樣就能全局通過v-debounce調用了.這個比傳統方法簡單很多,不需要call,apply之類的.

關鍵點:vue 的自定義指令傳遞的參數binding 如果是一個函數,則通過binding.value()來執行,通過上述示例,還可以傳遞比如事件, 綁定對象之類的,上例綁定的是el, keyup事件,這些也可以通過binding傳遞,通過vue的自定義指令,可以簡化很多重復代碼,并且邏輯更加清晰

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持錯新站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 油尖旺区| 大足县| 大冶市| 九龙城区| 莒南县| 麻栗坡县| 旌德县| 通化市| 商河县| 临邑县| 阿克| 永丰县| 双鸭山市| 韩城市| 莎车县| 武安市| 大同市| 逊克县| 武穴市| 调兵山市| 大竹县| 民勤县| 邛崃市| 内乡县| 大兴区| 葵青区| 铜鼓县| 博罗县| 乾安县| 吉安市| 措勤县| 娱乐| 梅河口市| 迭部县| 温宿县| 巧家县| 武宁县| 漠河县| 武城县| 北碚区| 突泉县|