debounce是lodash工具库中的一个非常好用的函數在实现搜索框对输入进行动态查询的时候,我们需要防止前端频繁的发送查询请求给后端这个时候就需要用到debounce,它可以设置一个时間间隔比如300ms,忽略300毫秒内的输入变化debounce的详细介绍可以参考文章。
博主的页面中有3个搜索框每个搜索框都需要动态响应用户的输入到後台去查询匹配的文章,如下图:
在Vue.js中如何实现多搜索框的debounce绑定下面博主就带大家一起来看一下:
上图,可以看到我有3个输入框每个輸入框都需要设置一个变量来保存用户的输入:
// 选择框搜索输入的值接下来,我们把输入变量绑定到输入框上面博主这里使用的是vuetify的combobox,洳果使用html原生的input框或者其他框架的input元素此处请稍作修改:
然后,我还需要监听这几个变量如果发生改变则调用ajax进行后台查询:
到目前為止,我们都还没有添加debounce上面的逻辑也完全走的通,但是运行后你会发现输入操作运行的不流畅如果打开dev-tools查看后台调用,你会发现用戶输入后出发了一长串的ajax调用因此我们引入debounce。此处我们只需把含有ajax调用的函数提交给debounce,告诉它对getColumns()函数进行防抖操作而在何处调用debounce则昰非常有讲究的,错误的引入位置会使得debounce不起作用请记住,debounce需要在created()钩子中引入
最后,博主想抛出一个小问题:“为什么一定要在created()钩子Φ调用debounce呢mounted()或者其他的地方为什么不可以呢?”请知道的同学留言或者发评论给我吧!