vue(input频繁搜索) 防抖、取消防抖
前言需求:ui框架用的iview,需求是tree组件增加可筛选功能,enter键和input输入都可搜索。问题:如果用户快速输入值,就会持续触发筛选功能,用户体验受到影响,如果是发送请求甚至加大服务器的压力enter键和input输入都可搜索,会调用两次方法通过防抖优化性能:<Input prefix="ios-search" v-model.trim="searchVal" placeho
·
前言
需求:ui框架用的iview,需求是tree组件增加可筛选功能,enter键和input输入都可搜索。
问题:
- 如果用户快速输入值,就会持续触发筛选功能,用户体验受到影响,如果是发送请求甚至加大服务器的压力
enter键和input输入都可搜索,会调用两次方法
通过防抖优化性能:
<Input prefix="ios-search" v-model.trim="searchVal" placeholder="请输入机构名称" style="width: auto" @on-change="inputChange" @on-enter="enterEvent"/>
data(){
return {
timeou: null //定义一个变量存放定时器
}
}
methods: {
//防抖
/*
@params
func: 函数
wait: 延迟时间
*/
debounce (func, wait) {
if (this.timeout) clearTimeout(this.timeout)
this.timeout = setTimeout(() => {
func()
}, wait)
},
// input 实时输入
inputChange (v) {
this.debounce(this.search, 2000)
},
// enter事件
enterEvent () {
//有定时器任务,清除定时器任务,避免调用两次search方法
if (this.timeout) clearTimeout(this.timeout)
this.search()
},
search() {
// 搜索逻辑
}
}
更多推荐
已为社区贡献4条内容
所有评论(0)