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

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

时间:2023-12-07 13:04:45浏览次数:30  
标签: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 实现按钮指定间隔时间点击_element


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

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

相关文章

  • vue webpack 配置babel es6转化转化es5
    1、安装相关依赖npmi-D@babel/[email protected]@babel/[email protected]@8.0.6//语法中有asyncawait等npmi-D@babel/[email protected]@babel/[email protected]、babel.config.jsmodule.exports={pres......
  • uni-app 基础架构搭建 ts+vue3 命令行
    1. 安装全局degitnpminstall-gdegit2.创建工程my-vue3-ts-project#创建以javascript开发的工程npxdegitdcloudio/uni-preset-vue#vitemy-vue3-ts-project#创建以ts开发的工程npxdegitdcloudio/uni-preset-vue#vite-tsmy-vue3-ts-project3进入目录cdmy-v......
  • vue + 无限滚动不同高度
     <divclass="exbox"style="height:461px;overflow:auto"@mouseenter="handleMouseEnter()"@mouseleave="handleMouseLeave()">       <divclass="mainrollul"ref="textList"id="......
  • 无涯教程-Erlang - element函数
    该方法返回元组中的第Nth元素。element-语法element(N,Tuple)N    -元组中需要返回的位置。Tuple -需要为其返回第N元素的元组。element-返回值该方法返回元组中的第Nth元素。-module(helloLearnfk).-export([start/0]).start()->io:......
  • Vue 配置.env.pro和.env.dev文件
    1、Vue2配置1.1新建文件.env.developmentVUE_APP_BASEURL='http://localhost:8081'.env.productionVUE_APP_BASEURL='http://localhost:8082'1.2访问importVuefrom'vue'//配置全局请求地址Vue.prototype.$baseUrl=process.env.VUE_APP_BA......
  • 开发者的福音:TinyVue 组件库文档大优化!类型更详细,描述更清晰!
    你好,我是Kagol。前言从今年2月份开源以来,有不少朋友给我们TinyVue组件库提了文档优化的建议,这些建议都非常中肯,我们也在持续对文档进行优化,并且从中总结出了大家对于文档优化的一些共性问题,形成了一份《组件demo和api文档编写规范》为了提升开发者阅读文档的体验,从9月......
  • Vue前端+后端实现带进度条文件分片上传
    传输参数对象packagecom.deju.provider.upload.domain;importlombok.Data;importorg.springframework.web.multipart.MultipartFile;@DatapublicclassMultipartFileParam{ //文件传输任务ID privateStringtaskId; //当前为第几分片 privateintchun......
  • VUE3引入pinia配置使用
    文档:https://pinia.vuejs.org/zh/introduction.html1.引入pinnanpminstallpinia-S2.在src文件里面创建store文件article.js在main.js中引用pinnaimport{defineStore}from'pinia'//你可以对`defineStore()`的返回值进行任意命名,但最好使用store的名字,同时以......
  • Vue动画效果-商品加入购物车
    购物类app中常有商品加入购物车的动画需求主要实现代码typeFn=(...args:any[])=>voidinterfaceEvents{[name:string]:Fn[]}exportclassEventEmitter{events:Eventsconstructor(){this.events={}}on(type:string,fn:Fn){i......
  • Vue3+Vite+ElementPlus管理系统常见问题
     本文本记录了使用Vue3+Vite+ElementPlus从0开始搭建一个前端工程会面临的常见问题,没有技术深度,但全都是解决实际问题的干货,可以当作是问题手册以备后用。本人日常工作偏后端开发,因此,文中的一些前端术语描述可能不严谨,敬请谅解。重点是:这里记录的解决方案都是行之有效果的,拿来......