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 相关文章推荐
用CSS+JS实现的进度条效果效果
Jun 05 Javascript
js修改input的type属性问题探讨
Oct 12 Javascript
cookie的复制与使用记住用户名实现代码
Nov 04 Javascript
JavaScript常用小技巧小结
Dec 29 Javascript
jQuery文字提示与图片提示效果实现方法
Jul 04 Javascript
Angular 页面跳转时传参问题
Aug 01 Javascript
Bootstrap源码解读按钮(5)
Dec 23 Javascript
js获取浏览器和屏幕的各种宽度高度
Feb 22 Javascript
基于JavaScript实现百度搜索框效果
Jun 28 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
Sep 30 Javascript
vue用elementui写form表单时,在label里添加空格操作
Aug 13 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
Nov 11 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实现WEB动态网页静态
2006/10/09 PHP
php中Smarty模板初体验
2011/08/08 PHP
PHP实例分享判断客户端是否使用代理服务器及其匿名级别
2014/06/04 PHP
php+ajax导入大数据时产生的问题处理
2014/06/11 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
php生成mysql的数据字典
2016/07/07 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
php实现websocket实时消息推送
2018/03/30 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
jquery 查找新建元素代码
2010/07/06 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
python采用requests库模拟登录和抓取数据的简单示例
2014/07/05 Python
简单谈谈python的反射机制
2016/06/28 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
银行实习人员自我鉴定
2013/09/22 职场文书
博士生入学考试推荐信
2013/11/17 职场文书
求职信模版
2013/11/30 职场文书
高三历史教学反思
2014/01/09 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
企业务虚会发言材料
2014/10/20 职场文书
Python超详细分步解析随机漫步
2022/03/17 Python
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL