vue組件中使用防抖函數(shù)的方式
vue組件中使用防抖函數(shù)
在實(shí)際開發(fā)中,比如搜索欄,用戶輸入一個(gè)字符都要發(fā)送網(wǎng)絡(luò)請(qǐng)求來返回搜索結(jié)果,這樣對(duì)服務(wù)器的壓力就太大了,我們需要使用防抖函數(shù),來降低這個(gè)頻率
1.在組件methods中定義防抖函數(shù)
methods: {
debounce(fn, wait) {
let timer = null;
return function (...args) {
if (timer) {
clearTimeout(timer)
timer = null
}
timer = setTimeout(function () {
fn.apply(this, args)
}, wait)
}
}
}
/* fn:需要頻繁調(diào)用的方法 */
/* wait:間隔時(shí)間,表示多長時(shí)間沒有操作則執(zhí)行fn方法*/
/* 為什么要使用fn.apply()方法?需要改變function的this指向 */2.在組件data中定義一個(gè)空的數(shù)據(jù)
data() {
return {
getData:null
}
}3.在組件的創(chuàng)建或掛載生命周期函數(shù)中調(diào)用防抖函數(shù)
并將返回值賦值給data中的getData
- 在methods中添加一個(gè)方法,用于模擬需要頻繁調(diào)用的方法(比如網(wǎng)絡(luò)請(qǐng)求)
methods: {
request(e) {
if (e) {
console.log('發(fā)送網(wǎng)絡(luò)請(qǐng)求:' + e)
}
}
}
/* 判斷一下e的值是否為空,如果為空則不發(fā)送請(qǐng)求 */- 在created或mounted生命周期函數(shù)中調(diào)用防抖函數(shù)
created() {
this.getData = this.debounce(this.request,500)
}
/* 調(diào)用防抖函數(shù)的同時(shí)傳入一個(gè)方法,和間隔時(shí)間(傳入的方法不帶括號(hào)表示直接把函數(shù)本身傳入,如果帶有括號(hào)則表示直接執(zhí)行函數(shù)) */
/* 防抖函數(shù)返回的是一個(gè)function,我們用data中的getData來接收它 */4.在methods中創(chuàng)建一個(gè)方法,并調(diào)用data中的getData
methods: {
getServerData(e) {
this.getData(e.target.value)
}
}5.在input中模擬防抖
<template>
<div>
<input type="text" v-on:input="getServeData($event)">
</div>
</template>6.結(jié)果對(duì)比
- 沒有防抖

- 開啟防抖

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Vue封裝一個(gè)可隨時(shí)暫停啟動(dòng)無需擔(dān)心副作用的定時(shí)器
這篇文章主要為大家詳細(xì)介紹了如何使用Vue封裝一個(gè)可隨時(shí)暫停啟動(dòng)無需擔(dān)心副作用的定時(shí)器,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11
vue中的@click.native 原生點(diǎn)擊事件
這篇文章主要介紹了vue中的@click.native 原生點(diǎn)擊事件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
vue+iview/elementUi實(shí)現(xiàn)城市多選
這篇文章主要介紹了vue+iview/elementUi實(shí)現(xiàn)城市多選,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
vue項(xiàng)目報(bào)錯(cuò)Extra?semicolon?(semi)問題及解決
這篇文章主要介紹了vue項(xiàng)目報(bào)錯(cuò)Extra?semicolon?(semi)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
element-ui tooltip修改背景顏色和箭頭顏色的實(shí)現(xiàn)
這篇文章主要介紹了element-ui tooltip修改背景顏色和箭頭顏色的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12

