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 相关文章推荐
很多人都是用下面的js刷新站IP和PV
Sep 05 Javascript
jQuery页面滚动浮动层智能定位实例代码
Aug 23 Javascript
extjs 04_grid 单击事件新发现
Nov 27 Javascript
JQuery中serialize()用法实例分析
Feb 06 Javascript
js动态修改表格行colspan列跨度的方法
Mar 30 Javascript
vue双向绑定简要分析
Mar 23 Javascript
Webpack path与publicPath的区别详解
May 03 Javascript
AngularJS自定义表单验证功能实例详解
Aug 24 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
Sep 21 Javascript
IE9 elementUI文件上传的问题解决
Oct 17 Javascript
Vue表单控件绑定图文详解
Feb 11 Javascript
Vue实现类似Spring官网图片滑动效果方法
Mar 01 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
PHP 程序员的调试技术小结
2009/11/15 PHP
php中定义网站根目录的常用方法
2010/08/08 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
再谈JavaScript线程
2015/07/10 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
基于javascript制作微信聊天面板
2020/08/09 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
浅谈js闭包理解
2019/04/01 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
js实现电灯开关效果
2021/01/19 Javascript
python 回调函数和回调方法的实现分析
2016/03/23 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
Python+Selenium使用Page Object实现页面自动化测试
2019/07/14 Python
Python timeit模块的使用实践
2020/01/13 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
Python基于staticmethod装饰器标示静态方法
2020/10/17 Python
python 匿名函数与三元运算学习笔记
2020/10/23 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
瑞典时尚耳机品牌:Urbanears
2017/07/26 全球购物
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
关于VPN
2012/06/10 面试题
行政助理岗位职责
2013/11/10 职场文书
班组长安全职责
2014/01/05 职场文书
初中作文评语大全
2014/04/23 职场文书
跳槽求职信范文
2014/05/26 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android