vue3定義全局防抖指令

文章目錄

  • 代碼
  • 參數講解

在寫項目時,總會有要進行防抖節流的時候,如果寫一個debounce函數的話 用起來代碼總會是有點長的,因此想到了用一個全局指令進行輸入框的防抖,畢竟全局指令使用時只要v-xxx就行了,非常方便

代碼

前提是需要全局注冊
在這里插入圖片描述
使用
在這里插入圖片描述

export default {debounce: {mounted(el: {addEventListener: (arg0: string, arg1: () => void) => void;value: any;},binding: { value: any; arg: any },) {let timer: number | null = null;const { value, arg = 0 } = binding;el.addEventListener("input", () => {if (timer) {clearTimeout(timer);}timer = setTimeout(() => {value(el.value, arg);}, 1000);});},updated(el: {addEventListener: (arg0: string, arg1: (e: any) => void) => void;value: any;removeEventListener: (arg0: string, arg1: (e: any) => void) => void;},binding: { value: any; arg: any },) {// 若指令的值更新,重新綁定事件處理函數let timer: number | null = null;let { value, arg = 0 } = binding;const existingListener = (e: any) => {if (timer) {clearTimeout(timer);}timer = setTimeout(() => {value(el.value, arg);}, 1000);};//   el.removeEventListener("input", existingListener);//   el.addEventListener("input", existingListener);},},
};

v-debounce 后面的 :[typeId]就是傳的參數 即arg

注意:如果寫v-debounce.typeId 那么傳的就是一個字符串“typeId” 而且[ ]只支持傳一個參數 如果想要傳多個參數的話 建議使用數組進行整體的傳參

參數講解

講一下binding函數的幾個參數

  bind(el, binding, vnode, oldVnode) { }

el:指令綁定的元素的DOM。
binding:一個傳參對象,包含以下的屬性:

value:傳遞給指令的值。例如:v-focus=“1”,獲取到的值就是 1
oldValue:更新之前的值,僅在 beforeUpdate 和 updated 中可用。無論值是否更改,它都可用。
arg:傳遞給指令的參數 (如果有的話)。例如在
v-my-directive:foo 中,參數是 “foo”。
modifiers:傳入修飾符的對象 。例如在v-my-directive.foo.bar 中,修飾符對象是 { foo: true, bar: true }。
instance:使用該指令的組件實例。
dir:指令的定義對象。

vnode:代表綁定元素的底層 VNode。
prevNode:之前的渲染中代表指令所綁定元素的 VNode。僅在 beforeUpdate 和 updated 鉤子中可用。

舉個例子

<div v-example:foo.bar="baz">

binding參數會是一個這樣的對象

{arg: 'foo',modifiers: { bar: true },//傳遞的修飾符value: /* `baz` 的值 */,oldValue: /* 上一次更新時 `baz` 的值 */
}

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

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

相關文章

WebDeveloper 流量分析、sudo提權,靶場通關WP

一、信息收集 1、主機探測 arp-scan -l netdiscover -i eth0 -r 192.168.33.0/24 nmap -sP 192.168.66.0/24 2、端口掃描 nmap -sS -sV 192.168.66.141 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0) 80/tcp op…

某化工廠運維升級:智和信通運維平臺實現工業交換機智能管理

隨著某化工廠數字化轉型的加速推進&#xff0c;其生產過程對復雜網絡和IT設備的依賴程度日益加深。當前的網絡不僅承載著生產控制系統&#xff08;如DCS、PLC等&#xff09;的通信需求&#xff0c;還同時支持辦公自動化、安防監控、工業物聯網&#xff08;IoT&#xff09;等多種…

React:封裝一個編輯文章的組件

封裝一個編輯文章的組件,就要用到富文本編輯器,支持標題、內容、標簽等的編輯,并且能夠保存和取消。 首先,我需要考慮用戶的具體需求。編輯文章組件通常需要哪些功能?標題輸入、內容編輯、標簽管理、保存和取消按鈕。可能還需要自動保存草稿、驗證輸入、錯誤提示等功能。用…

數據結構與算法:圖論——并查集

先給出并查集的模板&#xff0c;還有一些leetcode算法題&#xff0c;以后遇見了相關題目再往上增加 并查集模板 整體模板C代碼如下&#xff1a; 空間復雜度&#xff1a; O(n) &#xff0c;申請一個father數組。 時間復雜度 路徑壓縮后的并查集時間復雜度在O(logn)與O(1)之間…

精品推薦-湖倉一體電商數據分析平臺實踐教程合集(視頻教程+設計文檔+完整項目代碼)

精品推薦&#xff0c;湖倉一體電商數據分析平臺實踐教程合集&#xff0c;包含視頻教程、設計文檔及完整項目代碼等資料&#xff0c;供大家學習。 1、項目背景介紹及項目架構 2、項目使用技術版本及組件搭建 3、項目數據種類與采集 4、實時業務統計指標分析一——ODS分層設計與…

Git 基本操作(一)

目錄 git add git commit git log git status git diff git 版本回退 git reset git add git add 指令為添加工作區中的文件到暫存區中。 git add file_name; //將工作區名稱為file_name的文件添加進暫存區 git add .; //將工作區中的所有文件添加進暫存區 git comm…

docker打包鏡像時提示permission denied

sudo usermod -aG docker $USER //讓當前用戶加入docker用戶組 sudo systemctl restart docker //重新啟動docker服務 newgrp docker //更新組權限 來源&#xff1a;docker命令出現permission denied的解決方法_permission denied while trying to connect…

Deepseek常用高效提問模板!

DeepSeek高效提問秘籍大放送&#xff01; 掌握這些實用提問模板&#xff0c;能讓你與DeepSeek的對話更加精準、高效&#xff01; 1. 精準闡述需求 提問時務必清晰明確地表達問題或任務。例如&#xff1a; 欠佳的提問&#xff1a;“隨便說點內容。”優化后的提問&#xff1a…

地震資料偏移成像中,多次波(多次反射波)處理

在地震資料偏移成像中&#xff0c;多次波&#xff08;多次反射波&#xff09;會降低成像質量&#xff0c;導致虛假同相軸和構造假象。處理多次波需要結合波場分離和壓制技術&#xff0c;以下是主要方法和開源算法參考&#xff1a; 1. 多次波處理的核心方法 (1) 基于波場分離的…

quickbi finebi 測評(案例講解)

quickbi & finebi 測評 國產BI中入門門檻比較低的有兩個&#xff0c;分別是quickbi和finebi。根據我的經驗通過這篇文章做一個關于這兩款BI的測評文章。 quickbi分為個人版、高級版、專業版、私有化部署四種。這篇文章以quickbi高級版為例&#xff0c;對quickbi進行分享。…

【進階】--函數棧幀的創建和銷毀詳解

目錄 一.函數棧幀的概念 二.理解函數棧幀能讓我們解決什么問題 三.相關寄存器和匯編指令知識點補充 四.函數棧幀的創建和銷毀 4.1.調用堆棧 4.2.函數棧幀的創建 4.3 函數棧幀的銷毀 一.函數棧幀的概念 --在C語言中&#xff0c;函數棧幀是指在函數調用過程中&#xff0c;…

基于大模型預測的輸尿管癌診療全流程研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與創新點 二、大模型預測輸尿管癌的原理與方法 2.1 大模型技術概述 2.2 用于輸尿管癌預測的大模型選擇 2.3 數據收集與處理 2.4 模型訓練與優化 三、術前風險預測與手術方案制定 3.1 術前風險預測指標 3.2 大模型預測…

【Machine Learning Q and AI 讀書筆記】- 03 小樣本學習

Machine Learning Q and AI 中文譯名 大模型技術30講&#xff0c;主要總結了大模型相關的技術要點&#xff0c;結合學術和工程化&#xff0c;對LLM從業者來說&#xff0c;是一份非常好的學習實踐技術地圖. 本文是Machine Learning Q and AI 讀書筆記的第3篇&#xff0c;對應原…

PETR和位置編碼

PETR和位置編碼 petr檢測網絡中有2種類型的位置編碼。 正弦編碼和petr論文提出的3D Position Embedding。transformer模塊輸入除了qkv&#xff0c;還有query_pos和key_pos。這里重點記錄下query_pos和key_pos的生成 query pos的生成 先定義reference_points, shape為(n_query…

Ubuntu搭建 Nginx以及Keepalived 實現 主備

目錄 前言1. 基本知識2. Keepalived3. 腳本配置4. Nginx前言 ?? 找工作,來萬碼優才:?? #小程序://萬碼優才/r6rqmzDaXpYkJZF 爬蟲神器,無代碼爬取,就來:bright.cn Java基本知識: java框架 零基礎從入門到精通的學習路線 附開源項目面經等(超全)【Java項目】實戰CRU…

文章記單詞 | 第56篇(六級)

一&#xff0c;單詞釋義 interview /??nt?vju?/&#xff1a; 名詞&#xff1a;面試&#xff1b;采訪&#xff1b;面談動詞&#xff1a;對… 進行面試&#xff1b;采訪&#xff1b;接見 radioactive /?re?di???kt?v/&#xff1a;形容詞&#xff1a;放射性的&#xff…

MATLAB函數調用全解析:從入門到精通

在MATLAB編程中&#xff0c;函數是代碼復用的核心單元。本文將全面解析MATLAB中各類函數的調用方法&#xff0c;包括內置函數、自定義函數、匿名函數等&#xff0c;幫助提升代碼效率&#xff01; 一、MATLAB函數概述 MATLAB函數分為以下類型&#xff1a; 內置函數&#xff1a…

哈希表筆記(二)redis

Redis哈希表實現分析 這份代碼是Redis核心數據結構之一的字典(dict)實現&#xff0c;本質上是一個哈希表的實現。Redis的字典結構被廣泛用于各種內部數據結構&#xff0c;包括Redis數據庫本身和哈希鍵類型。 核心特點 雙表設計&#xff1a;每個字典包含兩個哈希表&#xff0…

PDF嵌入隱藏的文字

所需依賴 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>9.0.0</version><type>pom</type> </dependency>源碼 /*** PDF工具*/ public class PdfUtils {/*** 在 PD…

RAG工程-基于LangChain 實現 Advanced RAG(預檢索-查詢優化)(下)

Multi-Query 多路召回 多路召回流程圖 多路召回策略利用大語言模型&#xff08;LLM&#xff09;對原始查詢進行拓展&#xff0c;生成多個與原始查詢相關的問題&#xff0c;再將原始查詢和生成的所有相關問題一同發送給檢索系統進行檢索。它適用于用戶查詢比較寬泛、模糊或者需要…