91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

宁强县| 和林格尔县| 南宫市| 和龙市| 信阳市| 齐河县| 抚远县| 方山县| 章丘市| 大厂| 古蔺县| 荆门市| 黑河市| 巴东县| 兴隆县| 额济纳旗| 孝感市| 古丈县| 凤冈县| 西贡区| 卢龙县| 舒兰市| 阜南县| 河南省| 淮南市| 霍邱县| 西城区| 皋兰县| 正宁县| 武陟县| 滨海县| 喀喇| 靖安县| 大同县| 平昌县| 东宁县| 洛南县| 正镶白旗| 类乌齐县| 镇赉县| 清新县|