首页 > 其他分享 >Vue + Element 实现按钮指定间隔时间点击

Vue + Element 实现按钮指定间隔时间点击

时间:2023-12-11 18:06:51浏览次数:25  
标签:10 Vue currentTime getDataLoading Element storedTime 点击 按钮 间隔时间


1、业务需求

需要加一个按钮,调用第三方API,按钮十分钟之内只能点击一次,刷新页面也只能点击一次

2、思路

加一个本地缓存的时间戳,通过时间戳计算指定时间内不能点击按钮

3、实现

1)vue页面

<template>
  <el-row :gutter="15">
    <el-col :span="4">
      <el-button
      type="danger"
      icon="el-icon-download" 
      @click="getData"
      :loading="getDataLoading">获取数据</el-button>
    </el-col>
  </el-row>
</template>

<script type="text/ecmascript-6">
import { GetDataInfo } from '@/api/xxx'

export default {
  data () {
    return {
      getDataLoading: false,
    }
  },
  methods: {
    // 获取数据按钮,10分钟内执行一次(本地缓存)
    async getData () {
      const storedTime = localStorage.getItem('lastClickGetDataTime') 
      const currentTime = Date.now() // 时间戳(秒级)
      if (!storedTime || (currentTime - storedTime) / 1000 / 60 >= 10) {
        // 如果存储的时间不存在或者距离上次点击时间超过10分钟,则执行按钮点击操作  
        this.getDataLoading = true
        try {
          await GetDataInfo({})
        } catch (error) {
          this.getDataLoading = false
        }
        this.getDataLoading = false
        localStorage.setItem('lastClickGetDataTime', currentTime) 
      } else {  
        // 距离上次点击时间小于10分钟,不做任何操作或给出提示  
        this.$message({  
          message: '请在十分钟后再点击按钮',  
          type: 'warning',
        })
      }
    },
  },
}
</script>

// 注:指定时间可以根据需要更新,比如1分钟内只能点击一次,只需要将循环部分改为

if (!storedTime || (currentTime - storedTime) / 1000 >= 60)

2) 效果

Vue + Element 实现按钮指定间隔时间点击_时间戳

希望以上内容能够帮助你使用Vue + Element 实现按钮指定间隔时间点击。欢迎点赞、关注、收藏,如果你还有其他问题,欢迎评论区交流。


标签:10,Vue,currentTime,getDataLoading,Element,storedTime,点击,按钮,间隔时间
From: https://blog.51cto.com/goodtimeggb/8776407

相关文章

  • vue2项目webpack打包的优化策略,降低打包文件后的大小
    1.区分开发模式和打包模式的main.js入口文件首先,在项目的根目录下创建一个名为vue.config.js的文件(如果已存在,请跳过此步骤)。然后对于你的项目中的mian.js新建一个相同内容的js文件,然后将这2个mian.js文件分别命名为打包模式的入口文件:main-prod.js开发模式的入口文件:mian-dev.js......
  • vue2环境变量配置开发环境和生产环境
    在项目根目录下新建.env文件写入变量比如本地链接VUE_APP_BASE_API=http://127.0.0.1:5000/在读取的时候使用process.env.VUE_APP_BASE_API就可以读到这个全局变量process.env.NODE_ENV有两个值开发环境:development,部署环境:production都为Srting字符串下面示例给baseurl添......
  • Vue报错:error Mixed spaces and tabs no-mixed-spaces-and-tabs
    Vue报错:errorMixedspacesandtabsno-mixed-spaces-and-tabs一、解释在开发过程中使用了ESLint,用来规范代码风格。ESLint是语法检查工具,缺点是对所写代码要求过于严格。这里是因为空格的使用导致的。二、报错可能出现的地方我第一次出现这个问题是在App.vue文件的<scr......
  • vue 千分位过滤器
    1.创建numberToCurrency.js文件//千分符过滤器exportfunctionnumberToCurrencyNo(value){if(!value)return0//判断value是否是以0开头的负数if(value<0&&value>-1){returnvalue}else{//将数值截取为小数部分和整数部分constval......
  • Vue—实现文件上传(多文件),图片上传
    一、图片上传//template<inputtype="file"accept="image/*"@change="changeImage()"ref="avatarInput"style="display:none"......
  • GitLab部署vue项目至GitLab Pages流水线配置
    image:node:16.15.0#表示使用有nodejs环境的docker,自己项目用的什么版本这就写什么版本stages:-deploypages:#!!!必须!!!使用pages关键字stage:deployscript:-npminstall-npmrunbuild-rm-rfpublic#删除public目录,开发过......
  • Springboot+Vue实现多文件上传
    多文件上传,后端接收到多次请求vue实现<el-uploadclass="upload-demo"action="http://10.240.46.88:8081/upload1":on-preview="handlePreview":on-remove="handleRemove":multiple="multiple"......
  • Adobe Photoshop Elements 2024 v24.0 简体中文版 | 中文直装版
    下载:资源下载介绍:PhotoshopElements2024(简称PSE即PS简化版)是一款定位在数码摄影领域的全新的图像处理软件,该软件包括了专业版的大多数特性,只有少量的简化选项,提供了调整颜色和光线,去除划痕,修复旧照片,打开闭合的眼睛等实用功能,非常方便。除此之外,这款软件操作简单,使用方......
  • vue如何实现文件上传及预览
    vue文件上传及预览<template><divid="file"><inputname="files" id="uploaderInput" type="file" accept="images/*" multiple@change="change"/><divclass="file_upload">......
  • element ui dropdown 下拉菜单 有二级菜单
    <el-dropdown:hide-on-click="false"ref="dropdown"@command="closeDrop"trigger="click"class="ml-10mr-10"><el-buttont......