日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue自定义指令封装节流_Vue自定义指令封装节流函数的方法示例

發布時間:2024/9/19 vue 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue自定义指令封装节流_Vue自定义指令封装节流函数的方法示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

節流函數是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的自定義指令封裝類似的方法.

type="text"

v-model="text"

v-debounce="search"

>

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)

}

}

}

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

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

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

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

本文標題: Vue自定義指令封裝節流函數的方法示例

本文地址: http://www.cppcns.com/ruanjian/java/232411.html

總結

以上是生活随笔為你收集整理的vue自定义指令封装节流_Vue自定义指令封装节流函数的方法示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。