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 相关文章推荐
jQuery 使用手册(二)
Sep 23 Javascript
理解Javascript_12_执行模型浅析
Oct 18 Javascript
详解JS 比较两个Json对象的值是否相等的实例
Nov 20 Javascript
一行命令搞定node.js 版本升级
Jul 20 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
Sep 24 Javascript
vue日期组件 支持vue1.0和2.0
Jan 09 Javascript
javascript 中Cookie读、写与删除操作
Mar 29 Javascript
bootstrap实现二级下拉菜单效果
Nov 23 Javascript
Vue中在新窗口打开页面及Vue-router的使用
Jun 13 Javascript
koa socket即时通讯的示例代码
Sep 07 Javascript
在vue中通过render函数给子组件设置ref操作
Nov 17 Vue.js
vue项目如何监听localStorage或sessionStorage的变化
Jan 04 Vue.js
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 和 MySQL 基础教程(三)
2006/10/09 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
Laravel中获取路由参数Route Parameters的五种方法示例
2017/09/29 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
js几个验证函数代码
2010/03/25 Javascript
javascript加号&quot;+&quot;的二义性说明
2013/03/04 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
JavaScript实现图像模糊化的方法实例
2017/01/15 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
简单实现vue验证码60秒倒计时功能
2017/10/11 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
Vue实现多页签组件
2021/01/14 Vue.js
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
详解PyTorch批训练及优化器比较
2018/04/28 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
Python逐行读取文件内容的方法总结
2020/02/14 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
大学毕业生工作的自我评价
2013/10/01 职场文书
小学生自我鉴定
2013/10/12 职场文书
2013年军训通讯稿
2014/02/05 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
婚前协议书标准版
2014/10/19 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
毕业生评语大全
2015/01/04 职场文书
表扬信格式模板
2015/05/05 职场文书
创作书写之导游词实用技巧分享(干货)
2019/12/20 职场文书
电脑无法安装Windows 11怎么办?无法安装Win11的解决方法
2021/11/21 数码科技