vue中click防抖

34 篇文章 1 订阅

初学自己写的小案例,介意的请看别人封装好的!!!喷子勿扰!!!
核心js:

export function debounce(func,isClick,obj,mess){
  let timer = null;
  return function(){ 
    isClick?func():obj.$message({type:"info",message:mess});
    obj.isClick= false;
    if(timer)clearTimeout(timer)
    timer = setTimeout(()=>{
      obj.isClick = true
    },5000)
  }()
}

应用:

<template>
  <div class="count">
  	<span class="add" @click="reduceOrAdd('-')">-</span>
    <span>{{pageIndex}}</span>
    <span class="add" @click="reduceOrAdd('+')">+</span>
  </div>
</template>
<script>
export default {
  name:"Count",
  data(){
    return {
      pageIndex:0,
      isClick:true,
      timer:null
    }
  },
  methods:{
    reduceOrAdd(option){
      if(option=="-"){
        debounce(this.reduce,this.isClick,this,"加载中...")
      } else {
        debounce(this.add,this.isClick,this,"加载中...")
      }	
    },	
    add(){
      this.pageIndex++; 	
    },
    reduce(){
      if(this.pageIndex==0)return this.pageIndex;	
    }   
 }
}
</script>

<style scoped>
.count{
  width:100px;
  display: flex;
  justify-content: space-around;
  align-items:center;
}
.add{
  display: inline-block;
  width:20px;
  height:20px;
  border:1px solid gray;
  text-align: center;
  line-height:20px;
  font-size:20px;
}
</style>

待解决问题:

  1. 设置修改isClick的延迟为1s,点击一次按钮后如果继续狂点,就算据第一次点击过了10s,持续不断的点也会导致锁定变量isClick永远为false。
  2. 期望:点击第一次以后,无论中间点多少次,只要据第一次点击间隔为1s,锁定变量isClick为true。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值