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 极速 隐藏/显示万行表格列只需 60毫秒
Mar 28 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
May 31 Javascript
zeroclipboard复制到剪切板的flash
Aug 04 Javascript
Javascript图像处理—平滑处理实现原理
Dec 28 Javascript
浅析用prototype定义自己的方法
Nov 14 Javascript
AngularJS入门教程之数据绑定原理详解
Nov 02 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
Sep 26 Javascript
Node.js EventEmmitter事件监听器用法实例分析
Jan 07 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
Apr 25 Javascript
JavaScript之Blob对象类型的具体使用方法
Nov 29 Javascript
javascript实现贪吃蛇游戏(娱乐版)
Aug 17 Javascript
Jquery+javascript实现支付网页数字键盘
Dec 21 jQuery
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学习之function的用法
2012/07/14 PHP
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
CodeIgniter生成静态页的方法
2016/05/17 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
Jquery 学习笔记(一)
2009/10/13 Javascript
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
JavaScript分页功能的实现方法
2015/04/25 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
通过网页查看JS源码中汉字显示乱码的解决方法
2016/10/26 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
11行JS代码制作二维码生成功能
2018/03/09 Javascript
Vue-cli3项目配置Vue.config.js实战记录
2018/07/29 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
Python中运算符&quot;==&quot;和&quot;is&quot;的详解
2016/10/08 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
Python使用进程Process模块管理资源
2020/03/05 Python
python的json包位置及用法总结
2020/06/21 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
澳洲的服装老品牌:SABA
2018/02/06 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
教师自我评价范例
2013/09/24 职场文书
建筑专业自我鉴定
2013/10/22 职场文书
大门门卫岗位职责
2013/11/30 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
求职信格式要求
2014/05/23 职场文书
关于召开会议的通知
2015/04/15 职场文书