uniapp实现按钮防重复点击(防抖)完整解决方案

需求:

防止用户连续点击按钮,造成短时间内发起多次请求,对后台服务造成压力;

防止第一次请求还没执行完,第二次请求就发起了。

实现方案:

按钮disable禁用+定时器按钮恢复

其中定义disable变量主要是为了保证逻辑的按顺序执行,定时器恢复主要是为了防止按钮重复点击,因为如果请求响应的特别快,用户还是有可能在短时间内执行多次请求,所以二者缺一不可,这才是完美解决方案

关键代码

按钮:

复制代码
<view @click="submit"  :class="{ disabledBtn: isSubmitting }">提交</view>

定义数据:

复制代码
data() {
    return {
      isSubmitting: false,
      }
}

点击事件:

复制代码
submit(){
  // 防抖提交
   if (this.isSubmitting){
     return
   }
   this.isSubmitting = true;
   try {
     // 这是我自己封装的api工具js,可以换成自己的请求,恢复按钮的代码放在请求执行完成之后即可
     this.$u.api.testRequestApi(this.model).then(res => {
       if(res.success){
         uni.showToast({
           title: '操作成功',
           icon: 'none',
           duration: 3000
         });
       }
       setTimeout(() => {
         this.isSubmitting = false;
       }, 1500);
     });
   } catch (error) {
     // 这里不要在finally里写false,因为我们要实现等请求结束后才可以点击下一次
     this.isSubmitting = false;
   }
 },

按钮置灰不可点击(关键)

复制代码
<style lang="scss" scoped>
	.disabledBtn {
	  pointer-events: none;
	  opacity: 0.6;
	}
</style>
相关推荐
于先生吖13 小时前
UniApp搭配Java后端实现到店预约上门指派,订单状态流转与结算开发教程
java·开发语言·uni-app
岳哥i16 小时前
uniapp打包原生App流程及兼容性适配
uni-app
niech_cn17 小时前
uniapp开发App(iOS、Android、鸿蒙Next)之配置pages.json 页面路由(三)
android·ios·uni-app
郑州光合科技余经理18 小时前
海外版外卖系统源码:支付/地图/多语言核心代码实现
android·java·前端·后端·架构·uni-app·php
游戏开发爱好者819 小时前
Linux 自动上传 App Store Connect:把 IPA 上传流程接进CI工作流
linux·运维·ios·ci/cd·小程序·uni-app·iphone
暗冰ཏོ19 小时前
《uni-app 跨端开发完整指南:从基础入门到 H5、小程序、App 发布上线》
前端·小程序·uni-app·vue·html5
梦梦代码精19 小时前
TP8+Vue3+UniApp:LikeShop架构受青睐!
架构·uni-app
暗冰ཏོ20 小时前
2026 App 开发完整指南:Android、iOS、跨平台开发与安卓应用上线全流程
android·ios·uni-app·web app·app开发
Geek_Vison2 天前
技术实践:保险健康APP引入第三方小程序实战,如何构建一个安全可控的沙箱环境~
android·安全·小程序·uni-app·mpaas
2501_915918412 天前
Python如何抓取HTTPS请求包的完整教程与代码示例
android·ios·小程序·https·uni-app·iphone·webview