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 得到文件后缀名的思路及实现
May 09 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
Jan 26 Javascript
使用jQuery仿苹果官网焦点图特效
Dec 23 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
Dec 26 Javascript
zepto.js中tap事件阻止冒泡的实现方法
Feb 12 Javascript
jquery点击展示与隐藏更多内容
Dec 03 Javascript
Angular2自定义分页组件
Apr 19 Javascript
Vue组件中prop属性使用说明实例代码详解
May 31 Javascript
Vue props用法详解(小结)
Jul 03 Javascript
浅析微信扫码登录原理(小结)
Oct 29 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
Nov 19 Javascript
javascript实现画板功能
Apr 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实现的随机广告显示代码
2007/06/14 PHP
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
yii2 url重写并隐藏index.php方法
2018/12/10 PHP
Js 本页面传值实现代码
2009/05/17 Javascript
Mootools 1.2教程 函数
2009/09/15 Javascript
jQuery点击弹出下拉菜单的小例子
2013/08/01 Javascript
JS下拉缓冲菜单示例代码
2013/08/30 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
2017/03/23 jQuery
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
浅谈vue后台管理系统权限控制思考与实践
2018/12/19 Javascript
关于vue的npm run dev和npm run build的区别介绍
2019/01/14 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
纯js+css实现在线时钟
2020/08/18 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
python访问系统环境变量的方法
2015/04/29 Python
pandas把dataframe转成Series,改变列中值的类型方法
2018/04/10 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
Python生成一个迭代器的实操方法
2019/06/18 Python
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
Eclipse面试题
2014/03/22 面试题
internal修饰符起什么作用
2013/12/16 面试题
篝火晚会主持词
2014/03/25 职场文书
文明好少年事迹材料
2014/08/19 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
学生保证书格式
2015/02/27 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
绿里奇迹观后感
2015/06/15 职场文书
创业计划书之养殖业
2019/10/11 职场文书
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android