vue点击按钮上条数据保留问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue点击按钮上条数据保留问题相关的知识,希望对你有一定的参考价值。

参考技术A 第一种: 不操作数据型

•第二种: 操作数据型

这里我们通过控制isDisable 来设置 disabled来控制按钮的点击和不可点击。 默认isDisable:的值为 false,按钮可以点击。 当我们点击这个按钮的时候,首先将按钮的绑定isDisable设置为true,1秒后立马将其置为false。 所以用户只能有一秒的时间去操作这个按钮。

vue router拦截器防止重复点击

参考技术A 我们在项目中都会遇到这样的情况,当进入某个页面,通过点击创建按钮创建系统的一个模块。在你点下按钮时api请求已经发出,此时如果再次点击这个按钮,若不做任何处理,那么这个api请求就又会触发一次。即此时发送了两个相同的请求,这便是我们不想看到的结果。解决这个问题有很多种方法:比如在按钮点击时,禁用该按钮直到这个请求的后台返回数据,再放开禁用的按钮。但这个方法有个问题就是,如果你的项目中有很多地方需要做处理,那么你就会需要在各个地方都做一下这样的处理,导致工作量加大,也都是写重复枯燥的步骤。

因此我在这介绍另一种方案,即通过vue router 的拦截器去实现。大致逻辑是:首先点击按钮,此时拦截器会拦截到api请求的request,判断当请求是post请求时,通过传递过来的参数,使用MD5加密的方式将参数加密成一个唯一的签名字符串。通过这个签名字符串来判断请求是否是来自同一个api。将签名存在session中,借此来判断是否是短时间内单个api的多次请求。

当请求发出时,我们同时将签名字符串存在请求的request herders中发送给后台。 这时候也就需要后台配合一下,让后台开发人员将我们传过去的签名字符串在response headers再次返回给我们 。这么做的原因是因为:当这次请求已经返回数据时,我们要将原先禁止同个api再次请求的限制给去除。通过后台返回的签名,我们就可以知道应该将那个api放开限制。

注意:不论是请求超时,还是请求出错,都应该将缓存中的签名数组给清空,不然会导致下次无法再次请求该接口。

MD5加密生成签名的方法:

这里是将签字字符串传入到request headers中,然后后台再将它放在response headers中返回回来。从而实现判断是否完成了一次api的请求。如果不想将签字字符串传入后台,也可以自己定义一个定时器。比如设置一个5秒的定时器,5秒内如果这个签字字符串出现了两次以上,则只发送一次该请求,也可以控制做到等待请求完整结束后再可以发出该请求。但是这样有一个问题,就是这事定时器的时间无法确定,因为接口请求的速度和网络有很大关系,无法保证接口就一定能够在你设置好的定时内就完成请求,所以在这我用了另外的方法。

一次完整的api请求中,签名字符串传入、返回的过程:

以上是关于vue点击按钮上条数据保留问题的主要内容,如果未能解决你的问题,请参考以下文章

vue中防止按钮重复点击提交的方法

vue 表格数据编辑,点击取消或者完成按钮后,关闭编辑状态没有及时生效

vue单页应用在页面刷新时保留状态数据的方法

SQL语句问题,查询时间字段与上条数据间隔小于10分钟的数据

vue router拦截器防止重复点击

Vue项目按钮重复提交