【Vue】Vue 项目需求 -- 实现搜索框输入防抖处理
🦖欢迎观阅本本篇文章,我是 Sam9029
Sam9029 的 InfoQ 主页:Sam9029 (infoq.cn)
**🐱🐉🐱🐉恭喜你,若此文你认为写的不错,不要吝啬你的赞扬,求收藏,求评论,求一个大大的赞!👍**
⭐前言
在 Vue 开发中,遇到了搜索框输入防抖处理
,算是防抖的使用场景之一吧,抽象其逻辑记录下来以备后用
场景需求
作为开发人员,一定要先搞清楚场景需求是什么
场景需求:
搜索输入时 ,判断用户在输入完成后 实现
即时的自动搜索
并且要防止
过度自动搜索
消耗性能
想想如何才能在 vue 中实现
(一开始想着往标签上绑定函数事件,在事件本体里面实现防抖,并不能实现,真正解决思路如下)
具体思路
如下:
思路: 使用
watch
+v-model
v-model 实现数据输入的同步更新(数据想想绑定)
watch 监听输入变化,使用防抖函数实现后续操作
🐉源码 (Vue-组合式 API)
需要选项式 API 的源码请查看 选项式API实现-Vue项目需求–实现搜索框输入防抖处理
🐸源码解读
keyword 执行数据双向绑定,同步获取搜索框的值
watch 监听的 keyword 事件
searchEvent 搜索事件(即需要被绑定防抖的搜索执行事件)
searchInput 接收 防抖的回调函数 变量 (使得之后每次调用都是同一个本执行防抖绑定的搜索事件)
debounce 防抖函数
需要注意的地方--使用变量来接收 防抖函数 返回的回调函数
入此处不理解--请看【JS-工具类】防抖与节流---在定义时返回的是回调函数--sam9029
以及
防抖函数源码
/⭐❗⭐❗防抖函数定义 返回的是一个回调函数, 我们可以用一个变量来接收
另一个需要注意的地方-使用 watch 监听的时候 调用 绑定了防抖的搜索事件
注意,以下 这样写❗不可以,❗不可以,不可以,不可以
(debounce(searchEvent,1000))()
因为这样做,你是在重复创建新的 防抖函数,所以会(一次改变就执行一次)不断执行
而放在变量里面就不是这样,每次调用变量执行相同地址的函数,及同一个防抖函数,
📕效果演示
额,gif 图搞不起,先上 CodePen.io 在线演示效果 (demo)
选项式 API 实现-Vue项目需求--实现搜索框输入防抖处理
组合式 API 实现-Vue项目需求--实现搜索框输入防抖处理-组合式API
拓展说明
关于防抖函数的更多内容 详情请看 我写的这一篇文章【JS-工具类】防抖与节流---在定义时返回的是回调函数--sam9029
参考:
js防抖的一些疑问解答:为什么addEventListener调用防抖可以,onClick不行【JS-工具类】防抖与节流---在定义时返回的是回调函数--sam9029
🦖我是 Sam9029,一个前端,坚信应无所往
文章若有错误,敬请指正🙏
**🐱🐉🐱🐉恭喜你,都看到这了,求收藏,求评论,求一个大大的赞👍!不过分吧**
Sam9029 的 InfoQ 主页:Sam9029 (infoq.cn)
版权声明: 本文为 InfoQ 作者【Sam9029】的原创文章。
原文链接:【http://xie.infoq.cn/article/97f9d73dc3c159085006d4b36】。文章转载请联系作者。
评论