亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue.js中debounce怎么用

發布時間:2021-02-02 14:23:58 來源:億速云 閱讀:1711 作者:小新 欄目:web開發

這篇文章給大家分享的是有關Vue.js中debounce怎么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

debounce簡介

debounce是lodash工具庫中的一個非常好用的函數。在實現搜索框對輸入進行動態查詢的時候,我們需要防止前端頻繁的發送查詢請求給后端,這個時候就需要用到debounce,它可以設置一個時間間隔,比如300ms,忽略300毫秒內的輸入變化。debounce的詳細介紹可以參考 這篇 文章。

debounce的高級用法

博主的頁面中有3個搜索框,每個搜索框都需要動態響應用戶的輸入到后臺去查詢匹配的文章,如下圖:

Vue.js中debounce怎么用 

在Vue.js中如何實現多搜索框的debounce綁定,下面博主就帶大家一起來看一下:

1. 監聽輸入變量

上圖,可以看到我有3個輸入框,每個輸入框都需要設置一個變量來保存用戶的輸入:

data () {
 return {
 // 可用的文章列表
 columnItems: [],
 // 是否正在加載
 isLoading: [false, false, false],
 // 選擇框搜索輸入的值
 searchColumn1: '',
 searchColumn2: '',
 searchColumn3: ''
 }
 },

接下來,我們把輸入變量綁定到輸入框上面。博主這里使用的是vuetify的combobox,如果使用html原生的input框或者其他框架的input元素,此處請稍作修改:

<label>推薦專欄1</label>
 <v-combobox :items="columnItems"
 :loading="isLoading[0]"
 :search-input.sync="searchColumn1"
 ...
 >
 ...
 </v-combobox>
 <label>推薦專欄2</label>
 <v-combobox
 :items="columnItems"
 :loading="isLoading[1]"
 :search-input.sync="searchColumn2"
 ...
 >
 ...
 </v-combobox>
 <label>推薦專欄3</label>
 <v-combobox
 :items="columnItems"
 :loading="isLoading[2]"
 :search-input.sync="searchColumn3"
 ...
 >
 ...
 </v-combobox>

然后,我還需要監聽這幾個變量,如果發生改變則調用ajax進行后臺查詢:

watch: {
 searchColumn1 (val) {
 this.getColumns(val, 0)
 },
 searchColumn2 (val) {
 this.getColumns(val, 1)
 },
 searchColumn3 (val) {
 this.getColumns(val, 2)
 }
 },
 ...
 methods: {
 getColumns: function (searchValue, index) {
 // Items have already been requested
 if (this.isLoading[index]) return
 this.isLoading[index] = true
 let vm = this
 let options = {
 page: 1
 }
 if (searchValue) {
 options.title = searchValue.trim()
 } else {
 vm.columnItems = []
 vm.isLoading[index] = false
 return
 }
 // console.log(options)
 vm.$store.dispatch('getAllColumns', options).then(function (columns) {
 if (columns && columns.length) {
 vm.columnItems = columns
 }
 vm.isLoading[index] = false
 })
 }
 }

2. 添加debounce綁定

到目前為止,我們都還沒有添加debounce,上面的邏輯也完全走的通,但是運行后你會發現輸入操作運行的不流暢,如果打開dev-tools查看后臺調用,你會發現用戶輸入后出發了一長串的ajax調用。因此我們引入debounce。此處,我們只需把含有ajax調用的函數提交給debounce,告訴它對getColumns()函數進行防抖操作。而在何處調用debounce則是非常有講究的,錯誤的引入位置會使得debounce不起作用。請記住,debounce需要在created()鉤子中引入。

import _ from 'lodash'
 ...
 created: function () {
 this.getColumns = _.debounce(this.getColumns, 500)
 },

感謝各位的閱讀!關于“Vue.js中debounce怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云梦县| 乌兰浩特市| 阜新市| 简阳市| 大城县| 东乌| 新田县| 孝感市| 浮山县| 江孜县| 桦川县| 宜川县| 青冈县| 广汉市| 武强县| 龙南县| 柳江县| 甘德县| 南投市| 子洲县| 巴楚县| 大竹县| 九寨沟县| 沧州市| 观塘区| 鄂伦春自治旗| 江阴市| 榆林市| 上蔡县| 巨鹿县| 田东县| 新乐市| 大悟县| 大厂| 滨海县| 通州区| 永城市| 错那县| 高阳县| 萍乡市| 麻江县|