Vue 的 debounce 允許我們延遲處理一些事件,知道用戶完成操作。這是一種非常實(shí)用的技術(shù),可以避免頻繁進(jìn)行重復(fù)的計(jì)算或請(qǐng)求。Vue 的 debounce 可以綁定到任何事件上,比如 input, scroll 或 window resize 等。
下面是一個(gè)簡(jiǎn)單的例子,演示 debounce 的使用:
<template>
<div>
<input v-model="search" @input="debounceSearch" />
<ul>
<li v-for="item in filteredUsers">{{ item.name }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
search: '',
users: [...], // an array of user objects
}
},
computed: {
filteredUsers() {
const regex = new RegExp(this.search, "i")
return this.users.filter(user =>regex.test(user.name))
}
},
methods: {
debounceSearch: _.debounce(function() {
console.log('searching...')
}, 500)
}
}
</script>
在上面的示例中,我們使用了 lodash 的 debounce 函數(shù)來對(duì) search 事件進(jìn)行 debounce。當(dāng)用戶輸入時(shí),我們不會(huì)立即進(jìn)行搜索,而是等待 500ms。只有當(dāng)用戶完成輸入并暫停 500ms 時(shí),我們才會(huì)執(zhí)行搜索,避免了頻繁的計(jì)算。
在處理一些復(fù)雜的事件時(shí),使用 debounce 可以極大地提高性能和用戶體驗(yàn)。Vue 的 debounce 使用非常簡(jiǎn)單,只需要將方法綁定到需要 debounce 的事件上,并設(shè)置延遲時(shí)間即可。