Vue 3输入框的防抖功能无法正常工作
Vue 3输入框的防抖未正确工作
watch(searchQuery, (newVal) => {
debounceFetch(newVal)
})
function debounceFetch(val) {
setTimeout(() => {
fetchData(val)
}, 500)
}
解决方案
在这里,setTimeout() 在每次迭代后未被清除
let debounceTimer = null
watch(searchQuery, (newVal) => {
debounceFetch(newVal)
})
function debounceFetch(val) {
clearTimeout(debounceTimer)
debounceTimer = setTimeout(() => {
fetchData(val)
}, 500)
}
每次watch触发debounceFetch() 时,都会创建一个setTimeout(),最终导致多次请求被发送。
我们需要做的是清除之前创建的setTimeout()。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。