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 相关文章推荐
google 搜索框添加关键字实现代码
Apr 24 Javascript
用apply让javascript函数仅执行一次的代码
Jun 27 Javascript
js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码
Dec 17 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
Aug 08 Javascript
JS简单限制textarea内输入字符数量的方法
Oct 14 Javascript
详解Node.js中的事件机制
Sep 22 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
Nov 26 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
Jan 14 Javascript
JS检测数组类型的方法小结
Mar 14 Javascript
javaScript产生随机数的用法小结
Apr 21 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
Dec 26 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
Aug 06 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 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
php中文验证码实现示例分享
2014/01/12 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
javascript EXCEL 操作类代码
2009/07/30 Javascript
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
VUE多层路由嵌套实现代码
2017/05/15 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
Python搜索引擎实现原理和方法
2017/11/27 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
python 画图 图例自由定义方式
2020/04/17 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
Python3爬虫中Splash的知识总结
2020/07/10 Python
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
商务会议邀请函
2014/01/09 职场文书
大学学习生活感言
2014/01/18 职场文书
初中三好学生自我鉴定
2014/04/07 职场文书
品牌推广策划方案
2014/05/28 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers