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的类继承
Mar 05 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
May 08 Javascript
jQuery实现可收缩展开的级联菜单实例代码
Nov 27 Javascript
jquery使用append(content)方法注意事项分享
Jan 06 Javascript
推荐一个封装好的getElementsByClassName方法
Dec 02 Javascript
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 jQuery
JavaScript中的ES6 Proxy的具体使用
Jun 16 Javascript
Vue学习之常用指令实例详解
Jan 06 Javascript
Vue使用预渲染代替SSR的方法
Jul 02 Javascript
Electron实现应用打包、自动升级过程解析
Jul 07 Javascript
openlayers4实现点动态扩散
Aug 17 Javascript
uniapp实现横向滚动选择日期
Oct 21 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实现快速排序的三种方法分享
2014/03/12 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
html中table数据排序的js代码
2011/08/09 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
详解angularjs的数组传参方式的简单实现
2017/07/28 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
Vue  webpack 项目自动打包压缩成zip文件的方法
2019/07/24 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
[01:25]2015国际邀请赛最佳短片奖——斧王《拆塔英雄:天赋异禀》
2015/09/22 DOTA
python每次处理固定个数的字符的方法总结
2013/01/29 Python
使用Python编写vim插件的简单示例
2015/04/17 Python
Python实现把回车符\r\n转换成\n
2015/04/23 Python
python实现应用程序在右键菜单中添加打开方式功能
2017/01/09 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
python脚本爬取字体文件的实现方法
2017/04/29 Python
举例讲解Python常用模块
2019/03/08 Python
python实现图片上添加图片
2019/11/26 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
extern是什么意思
2016/03/10 面试题
印刷工程专业应届生求职信
2013/09/29 职场文书
办加油卡单位介绍信
2014/01/09 职场文书
学校卫生检查制度
2014/02/03 职场文书
高一学生评语大全
2014/04/25 职场文书
2014年收银工作总结
2014/11/13 职场文书
承诺书模板大全
2015/05/04 职场文书