vue3: directive自定義指令防止重復點擊

第一章 前言

相信很多小伙伴會在各個渠道上搜如何防止重復點擊,之后會推薦什么防抖、節流來避免這一操作,該方法小編就不繼續往下說了。接下來說說小編的場景,項目已經完成的差不多了,但是由于之前大家都是直接點擊事件調用方法的,導致用戶頻繁點擊就會一直調用接口,從而導致不可避免的操作,如果使用防抖節流,小編發現必須在每一個用到按鈕的頁面導入、再使用等等感覺有點麻煩,于是小編想了想能不能在全局上就處理,經過小編的思考,于是最終選擇利用vue的自定義指令實現!官方文檔如下:

自定義指令 | Vue.js

源碼如下:

第二章 源碼

  • 創建directive文件夾:

index文件是根目錄,其他文件是你最終寫的每一個自定義指令。

  • reClick.js文件? 防止重復點擊方法,自定義指令?
// 通過控制元素的是否禁用,防止用戶在一段時間內不可點擊,從而防止重復點擊
export default {mounted(el, binding) {el.addEventListener('click', () => {if (!el.disabled) {el.disabled = truesetTimeout(() => {el.disabled = false}, binding.value || 500)}})}
}
  • index.js文件 引入多種自定義指令,包括防止重復點擊指令?
import reClick from './reClick'
//引入其他指令
/*** 導出指令方法:v-xxx* @methods reClick 防止重復點擊,用法:v-reClick*/
export function directive(app) {//連續點擊指令 v-reClick默認0.5秒不能連續點擊,可自定義v-reClick="1000"app.directive('reClick', reClick)
}
  • main.js全局引入?
import App from './App.vue';
import { directive } from '@/directive/index.js' //引入自定義指令
const app = createApp(App)
directive(app) //全局引入
  • vue文件使用
<a-button type="primary" v-reClick>查詢</a-button>
<a-button v-reClick="1000">重置</a-button>
<a-button v-reClick="2000">重置</a-button>
  • 最終實現效果:(禁用后即使點擊也不會再觸發我們的點擊事件)

  • 局限:使用該方法之后只能做到用戶在該段事件內不能再次點擊,如果在數據請求中,后端接口請求特別慢,在該段時間內按鈕又可以二次點擊(解決方案:配合全局loading或者添加標記在接口返回后我們再釋放el.disabled = false)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70698.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70698.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70698.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

忽略Git文件的修改,讓它不被提交

使用Git托管的工程中&#xff0c;經常有這樣的需求&#xff0c;希望文件只是本地修改&#xff0c;不提交到服務端。 如果僅僅是本地存在的文件&#xff0c;我們可以通過.gitignore配置避免文件被提交。 有的時候文件是由git托管的&#xff0c;但是我們希望只在本地修改&#…

Zap:Go 的高性能日志庫

文章目錄 Zap&#xff1a;Go 高性能日志庫一、Zap 的核心優勢二、快速入門 Zap1. 安裝2. 基本用法輸出示例 三、Logger 與 SugaredLogger&#xff1a;如何選擇&#xff1f;1. **Logger&#xff08;高性能模式&#xff09;**2. **SugaredLogger&#xff08;開發友好模式&#xf…

每日一題——順時針旋轉矩陣

順時針旋轉矩陣 目錄 一、問題描述二、解題思路 1. 原地旋轉矩陣2. 旋轉邏輯3. 代碼實現 三、代碼解析 1. 參數說明2. 原地旋轉邏輯3. 返回矩陣 四、示例測試代碼五、復雜度分析 1. 時間復雜度2. 空間復雜度 一、問題描述 以下是內容轉換為 CSDN 的 Markdown 格式&#xf…

接雨水的算法

題目 代碼 # 接雨水算法 def trap(height):# 1. 特殊情況&#xff1a;數組為空 則返回0if not height:return 0n len(height)# 2. 初始化左右指針&#xff0c;左右最大值&#xff0c;結果left, right 0, n - 1# maxleft代表左邊最大值&#xff0c;maxright代表右邊最大值max…

會話對象 HttpSession 二、HttpSession失效

session失效有如下幾個原因&#xff1a; session.invalidate()方法注銷sessionsession超時 <session-config><!-- session的超時時間&#xff0c;以分鐘為單位 --><session-timeout>1</session-timeout> </session-config>Cookie被禁用

Jenkins 創建 Node 到 Windows

Jenkins 創建 Node 到 Windows 一. 新建 Node Dashboard -> Manage Jenkins -> Manage Nodes and Clouds Dashboard -> Nodes -> New Node 二. 配置節點 Node&#xff1a;節點名 Description&#xff1a;節點描述 Number of executors&#xff1a;節點最大同…

Opengl常用緩沖對象功能介紹及使用示例(C++實現)

本文整理了常用的opengl緩沖區對象并安排了使用示例 名稱英文全稱作用簡述頂點數組對象Vertex Array Object (VAO)管理 VBO 和 EBO 的配置&#xff0c;存儲頂點屬性設置&#xff0c;簡化渲染流程&#xff0c;避免重復設置狀態頂點緩沖區對象Vertex Buffer Object (VBO)存儲頂點…

矩陣加減乘除的意義與應用

矩陣加法 數學意義 線性空間的封閉性線性變換的疊加矩陣分解與表示 實際應用 數據聚合與統計圖像處理與計算機視覺物理學與工程學動態系統與優化經濟學與運籌學信號處理與通信游戲開發與計算機圖形學環境科學與地理信息矩陣加法的關鍵特點 矩陣減法 數學意義線性空間封閉性 線…

【Redis原理】底層數據結構 五種數據類型

文章目錄 動態字符串SDS(simple dynamic string )SDS結構定義SDS動態擴容 IntSetIntSet 結構定義IntSet的升級 DictDict結構定義Dict的擴容Dict的收縮Dict 的rehash ZipListZipListEntryencoding 編碼字符串整數 ZipList的連鎖更新問題 QuickListQuickList源碼 SkipListRedisOb…

微信小程序 - 頁面跳轉(wx.navigateTo、wx.redirectTo、wx.switchTab、wx.reLaunch)

API 跳轉 1、wx.navigateTo &#xff08;1&#xff09;基本介紹 功能&#xff1a;保留當前頁面&#xff0c;跳轉到應用內的某個頁面&#xff0c;使用該方法跳轉后可以通過返回按鈕返回到原頁面 使用場景&#xff1a;適用于需要保留當前頁面狀態&#xff0c;后續還需返回的情…

Qt 中集成mqtt協議

一&#xff0c;引入qmqtt 庫 我是將整個頭文件/源文件都添加到了工程中進行編譯&#xff0c;這樣 跨平臺時 方便&#xff0c;直接編譯就行了。 原始倉庫路徑&#xff1a;https://github.com/emqx/qmqtt/tree/master 二&#xff0c;使用 聲明一個單例類&#xff0c;將訂閱到…

分布式之Raft算法

參考&#xff1a; 分布式算法 - Raft算法 | Java 全棧知識體系 Raft 算法詳解 | JavaGuide 分布式 | CS-Notes 面試筆記

安裝PHPStudy 并搭建DVWA靶場

目錄 一、PHPStudy 簡介 二、DVWA 簡介 三、安裝 PHPStudy 四&#xff1a;安裝 DVWA 一、PHPStudy 簡介 phpstudy傻瓜式的一鍵啟動&#xff0c;支持WAMP、WNMP、LAMP、LNMP&#xff0c;一鍵切換環境&#xff08;nginxapahce&#xff09;,一鍵切換PHP版本&#xff08;5.1-7…

孜然單授權系統V2.0PHP授權系統

孜然單授權V1.0系統&#xff0c;延續了2022年開發的孜然多應用授權系統V2.0 變更&#xff1a;多應用變單系統&#xff0c;去除沒用的垃圾代碼&#xff0c;從0開發&#xff0c;去除了一些沒用的功能 完善了開發文檔&#xff0c;之前那套是我寫著玩的屎山代碼&#xff0c;V1.0將展…

紅帽7基于kickstart搭建PXE環境

Kickstart 文件是一種配置文件&#xff0c;用于定義 Linux 系統安裝過程中的各種參數&#xff0c;如分區、網絡配置、軟件包選擇等。system-config-kickstart 提供了一個圖形界面&#xff0c;方便用戶快速生成這些配置文件。 用戶可以通過圖形界面進行系統安裝的詳細配置&…

怎么合并主從分支,要注意什么

在 Git 中合并主從分支&#xff08;例如將 feature 分支合并到 main 分支&#xff09;是一個常見操作。以下是具體步驟和注意事項&#xff1a; 合并分支的步驟 切換到主分支 git checkout main確保當前在 main 分支。 拉取最新代碼 git pull origin main確保 main 分支是最…

Java數據結構第十二期:走進二叉樹的奇妙世界(一)

專欄&#xff1a;數據結構(Java版) 個人主頁&#xff1a;手握風云 目錄 一、樹型結構 1.1. 樹的定義 1.2. 樹的基本概念 1.3. 樹的表示形式 二、二叉樹 2.1. 概念 2.2. 兩種特殊的二叉樹 2.3. 二叉樹的性質 2.4. 二叉樹的存儲 三、二叉樹的基本操作 一、樹型結構 1.…

匹配算法:向下就近原則,向下沒有就向上

匹配算法&#xff1a;向下就近原則&#xff0c;向下沒有就向上 實現方式一實現方式二總結 實現方式一 private static List<Integer> findMatches(List<Integer> sourceList, List<Integer> searchValues) {List<Integer> sortedList sourceList.stre…

基于 Python Django 的校園互助平臺(附源碼,文檔)

博主介紹&#xff1a;?Java徐師兄、7年大廠程序員經歷。全網粉絲13w、csdn博客專家、掘金/華為云等平臺優質作者、專注于Java技術領域和畢業項目實戰? &#x1f345;文末獲取源碼聯系&#x1f345; &#x1f447;&#x1f3fb; 精彩專欄推薦訂閱&#x1f447;&#x1f3fb; 不…

IP地址 vs 域名:分布式系統中的服務尋址之爭

在分布式系統中&#xff0c;服務之間的通信是核心問題之一。如何高效、穩定地找到目標服務&#xff0c;是每個開發者都需要面對的挑戰。常見的服務尋址方式有兩種&#xff1a;IP地址 和 域名。這兩種方式各有優劣&#xff0c;適用于不同的場景。本文將從性能、穩定性、動態性、…