前言

需求:ui框架用的iview,需求是tree组件增加可筛选功能,enter键和input输入都可搜索。
问题:

  1. 如果用户快速输入值,就会持续触发筛选功能,用户体验受到影响,如果是发送请求甚至加大服务器的压力

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() {
		// 搜索逻辑
	}
}
Logo

前往低代码交流专区

更多推荐