Vue 防止短时间内连续点击后多次触发请求的操作


Posted in Javascript onNovember 11, 2020

如果连续点击提交按钮,可能会重复提交数据,导致出错,解决的方法可以使用disabled限制点击,感觉体验不是太好,所有给大家分享下面的方法

<el-button @click="throttle()">测试</el-button> 
export default {
 data(){
  return {
   lastTime:0 //默认上一次点击时间为0 
  }
 }
}
methods:{
 throttle(){
  //获取当前时间的时间戳
  let now = new Date().valueOf();
  //第一次点击
  if(this.lastTime == 0){
   console.log('触发事件');
   this.lastTime = now;
  }else{
   if((now-this.lastTime) > 2000){
    //重置上一次点击时间,2000是我自己设置的2秒间隔,根据自己的需要更改
    this.lastTime = now;
    console.log('间隔大于2秒,触发方法');
    //添加自己要调用的方法
   }else{
    console.log('不触发');
   }
  }
  },
}

这种方法虽然很好,但是遇到请求超时的情况可能不是太好处理(网络原因、数据太大)。考虑通过后端是否返回res来控制。方法还有待提高!仅供参考~

补充知识:解决vuex中module过多时,需一个个引入的问题

在项目开发中,使用vuex,如果项目过大,vuex就需要模块化,但是如果module分的过多,我们就需要在store的index.js中一个个引入,这样未免太麻烦,所以webpack出来了个配置,可以解决这个问题,无需多次引入,懒癌患者福音,

以下是解决方案

import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'
Vue.use(Vuex)
const modulesFiles = require.context('./modules', true, /\.js$/)
const modules = modulesFiles.keys().reduce((modules, modulePath) => {
 const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
 const value = modulesFiles(modulePath)
 modules[moduleName] = value.default
 return modules
}, {})
const store = new Vuex.Store({
 modules,
 getters
})
export default store

配置了这个后就无需一个个引入模块了;

以上这篇Vue 防止短时间内连续点击后多次触发请求的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 刷新全集常用代码
Nov 22 Javascript
javascript正则表达式中的replace方法详解
Apr 20 Javascript
如何用javascript计算文本框还能输入多少个字符
Jul 29 Javascript
浅谈JS使用[ ]来访问对象属性
Sep 21 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
Nov 22 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
Feb 03 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
Mar 30 Javascript
解决VUEX兼容IE上的报错问题
Mar 01 Javascript
vue实现动态添加数据滚动条自动滚动到底部的示例代码
Jul 06 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
Aug 31 Javascript
laydate只显示时分 不显示秒的功能实现方法
Sep 28 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
Nov 12 Javascript
Vue 401配合Vuex防止多次弹框的案例
Nov 11 #Javascript
VUE-ElementUI 自定义Loading图操作
Nov 11 #Javascript
在elementui中Notification组件添加点击事件实例
Nov 11 #Javascript
vue.js+element 默认提示中英文操作
Nov 11 #Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
Nov 11 #Javascript
vue 实现element-ui中的加载中状态
Nov 11 #Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
Nov 11 #Javascript
You might like
PHP 和 XML: 使用expat函数(二)
2006/10/09 PHP
PHP 采集获取指定网址的内容
2010/01/05 PHP
深入php var_dump()函数的详解
2013/06/05 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
js中if语句的几种优化代码写法
2011/03/12 Javascript
分享几个超级震憾的图片特效
2012/01/08 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
JavaScript适配器模式详解
2017/10/19 Javascript
深入理解Angularjs 脏值检测
2018/10/12 Javascript
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
在Python中使用第三方模块的教程
2015/04/27 Python
Python检测QQ在线状态的方法
2015/05/09 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
python selenium操作cookie的实现
2020/03/18 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
泰海淘:泰国king Power王权免税集团旗下跨境海淘综合型电商
2020/07/26 全球购物
String和StringBuffer的区别
2015/08/13 面试题
在校生党员自我评价
2013/09/25 职场文书
小学教育毕业生自荐信
2013/11/18 职场文书
个人优缺点自我评价
2014/01/27 职场文书
小学敬老月活动方案
2014/02/11 职场文书
学校三节实施方案
2014/06/09 职场文书
奥运会口号
2014/06/13 职场文书
毕业生工作求职信
2014/06/30 职场文书
2014年团总支工作总结
2014/11/21 职场文书
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫