Vue- 防止重复点击指令
背景
在日常业务开发中,经常会需要处理按钮防止重复点击事件,因为在提交订单和支付金额的场景需要只触发一次,多次触发会导致业务异常
Vue局限
vue的事件响应是通过事件队列实现的,在极限情况(快速点击)是没办法防止按钮多次触发,即使使用了$nextTick,也只是延迟触发,没办法保证按钮不会重复触发
解决方案
我通过闭包创建一个状态机,实时管理状态变化,减少中间环节,从而实现数据快速响应
通过立即执行函数,把一部分状态存储在内存
指令
如何使用
重点
由于一般提交数据都是异步,前端没办法预估事件什么时候结束,所以需要在接口请求完数据,再改变状态je.status.unlock()
优点
通过指令的方式,和@click一致,把复杂逻辑封装在指令中,可以减少学习成本,无缝切换。
版权声明: 本文为 InfoQ 作者【老菜鸟】的原创文章。
原文链接:【http://xie.infoq.cn/article/14f5ae3cf3cf3405b19e68e8c】。文章转载请联系作者。
评论