vue3中的自定義指令

全局自定義指令

假設我們要創建一個全局指令v-highlight,用于高亮顯示元素。這個指令將接受一個顏色參數,并有一個可選的修飾符bold來決定是否加粗文本。

首先,在創建Vue應用時定義這個指令:(這里可以將指令抽離成單獨的方法,在app.js中調用

<template><div><p v-flash="'This is a flash message!'" duration="3000"></p></div>
</template><script setup>
import { ref, onMounted, onUnmounted } from 'vue';// 定義局部指令
const vFlash = {mounted(el, binding) {let timeoutId;// 獲取持續時間,默認為2000毫秒const duration = binding.value.duration || 2000;// 顯示元素el.style.opacity = 1;// 設置定時器,用于在指定時間后隱藏元素timeoutId = setTimeout(() => {el.style.opacity = 0;setTimeout(() => {el.style.display = 'none';}, 300); // 添加一點過渡時間}, duration);// 清除定時器的函數const cleanup = () => clearTimeout(timeoutId);// 組件卸載時清除定時器onUnmounted(cleanup);}
};// 在當前組件中注冊局部指令
defineOptions({ directives: {flash: vFlash}
});
</script>

接下來,在你的組件中使用這個自定義指令:

<template><button v-tooltip="'這是一個提示信息!'">懸停我查看提示</button>
</template>

在這個例子中,我們定義了一個v-highlight指令,它接受一個顏色參數(如'lightblue''green'),并且通過檢查bold修飾符來決定是否加粗文本。在組件模板中,我們通過v-highlight="'color'"來指定顏色,并通過添加:bold修飾符來應用加粗效果。

這樣,你就能夠更靈活地控制和定制組件的樣式和行為,充分利用Vue 3自定義指令的強大功能。

局部自定義指令

假設我們要在一個組件內部創建一個指令v-warn,該指令將文本顏色設置為橙色,并根據提供的修飾符改變文本的裝飾(如加下劃線)。

<template><div><p v-flash="'This is a flash message!'" duration="3000"></p></div>
</template><script setup>
import { ref, onMounted, onUnmounted } from 'vue';// 定義局部指令
const vFlash = {mounted(el, binding) {let timeoutId;// 獲取持續時間,默認為2000毫秒const duration = binding.value.duration || 2000;// 顯示元素el.style.opacity = 1;// 設置定時器,用于在指定時間后隱藏元素timeoutId = setTimeout(() => {el.style.opacity = 0;setTimeout(() => {el.style.display = 'none';}, 300); // 添加一點過渡時間}, duration);// 清除定時器的函數const cleanup = () => clearTimeout(timeoutId);// 組件卸載時清除定時器onUnmounted(cleanup);}
};// 在當前組件中注冊局部指令
defineOptions({ directives: {flash: vFlash}
});
</script>

在這個組件中,我們定義了一個名為warn的局部指令。該指令在元素被掛載時執行,將文本顏色設置為橙色。如果使用了.underline修飾符,則還會給文本添加下劃線。

使用局部指令

在組件的模板中,我們通過v-warn來應用這個指令,并且通過添加.modifierName的方式來使用修飾符。例如,v-warn.underline就表示應用warn指令并啟用underline修飾符。

總結

局部自定義指令為組件提供了一種方式,使其能夠擁有自己的特定邏輯來處理元素,而不影響其他組件。通過這種方式,你可以針對組件內部的特定需求定制行為,保持代碼的模塊化和組件的獨立性。在Vue 3中,局部指令通過組件的directives選項進行定義,使得它們的管理更加集中和清晰。

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

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

相關文章

昂科燒錄器支持BPS晶豐明源半導體的多相Buck控制器BPD93004E

芯片燒錄行業領導者-昂科技術近日發布最新的燒錄軟件更新及新增支持的芯片型號列表&#xff0c;其中BPS晶豐明源半導體的多相Buck控制器BPD93004E已經被昂科的通用燒錄平臺AP8000所支持。 BPD93004E是一款多相Buck控制器&#xff0c;支持原生1~4相&#xff0c;數字方式控制&am…

科普文:一文搞懂jvm原理(二)類加載器

概敘 科普文&#xff1a;一文搞懂jvm(一)jvm概敘-CSDN博客 前面我們介紹了jvm&#xff0c;jvm主要包括兩個子系統和兩個組件&#xff1a; Class loader(類裝載器) 子系統&#xff0c;Execution engine(執行引擎) 子系統&#xff1b;Runtime data area (運行時數據區域)組件&am…

Cambrian-1: A Fully Open, Vision-Centric Exploration of Multimodal LLMs

摘要 https://arxiv.org/pdf/2406.16860v1 我們介紹了Cambrian-1&#xff0c;這是一系列以視覺為中心的多模態大型語言模型&#xff08;MLLMs&#xff09;。盡管更強大的語言模型可以增強多模態能力&#xff0c;但視覺組件的設計選擇往往沒有得到充分的探索&#xff0c;并且與…

學習筆記(linux高級編程)9

void pthread_cleanup_push(void (*routine)(void *)&#xff0c; void *arg); 功能&#xff1a;注冊一個線程清理函數 參數&#xff0c;routine&#xff0c;線程清理函數的入口 arg&#xff0c;清理函數的參數。 返回值&#xff0c;無 void pthread_cleanup_pop(int execute)…

Perl語言入門指南

一、緒論 1.1 Perl語言概述 1.2 Perl的特色 1.3 Perl面臨的問題 1.4 Perl語言的應用領域 二、Perl語言基礎 2.1 Perl語言的歷史發展 2.2 Perl語言的基本語法 2.3 Perl語言的數據類型 三、Perl語言控制結構 3.1 條件語句 3.2 循環結構 3.3 函數和子程序 四、Perl語…

OpenStack開源虛擬化平臺(一)

目錄 一、OpenStack背景介紹&#xff08;一&#xff09;OpenStack是什么&#xff08;二&#xff09;OpenStack的主要服務 二、計算服務Nova&#xff08;一&#xff09;Nova組件介紹&#xff08;二&#xff09;Libvirt簡介&#xff08;三&#xff09;Nova中的RabbitMQ解析 OpenS…

MySQL-數據操作類型的角度理解 S鎖 X鎖

文章目錄 1、S鎖和S鎖互相兼容2、S鎖和X鎖互斥3、X鎖和X鎖也互斥4、X鎖和S鎖也互斥5、select * from account for update;6、select * from account for update nowait;7、select * from account for update skip locked; 1、S鎖和S鎖互相兼容 2、S鎖和X鎖互斥 3、X鎖和X鎖也互…

20240702 每日AI必讀資訊

&#x1f50d;GPTPdf&#xff1a;使用類似GPT-4o的多模態LLM分析PDF文件 - 使用類似 GPT-4o 多模態模型解析 PDF 文件&#xff0c;轉換為 Markdown 格式。 - 代碼簡潔高效&#xff0c;僅293行。 - 解析結果幾乎完美包括排版、數學公式、表格、圖片、圖表等內容。 &#x1…

【記錄】IDEA2023的激活與安裝

前言&#xff1a; 記錄IDEA2023的激活與安裝 第一步&#xff1a;官網下載安裝包&#xff1a; 下載地址&#xff1a;https://www.jetbrains.com/idea/download/other.html 這個最好選擇2023版本&#xff0c;用著很nice。 安裝步驟就不詳解了&#xff0c;無腦下一步就可以了…

(四十七)Vue Router之路由守衛

文章目錄 概念全局路由守衛全局前置守衛全局解析守衛全局后置路由守衛 獨享路由守衛組件內的守衛beforeRouteEnterbeforeRouteUpdatebeforeRouteLeave 完整的導航解析流程 上一篇&#xff1a;&#xff08;四十六&#xff09;Vue Router組件所獨有的兩個鉤子activate、deactivat…

VLAN原理與配置

AUTHOR &#xff1a;閆小雨 DATE&#xff1a;2024-04-28 目錄 VLAN的三種端口類型 VLAN原理 什么是VLAN 為什么使用VLAN VLAN的基本原理 VLAN標簽 VLAN標簽各字段含義如下&#xff1a; VLAN的劃分方式 VLAN的劃分包括如下5種方法&#xff1a; VLAN的接口鏈路類型 創建V…

Android system.img掛載和解除掛載

Android system.img掛載和解除掛載 解包后的super.img&#xff0c;里面最重要的是system.img文件&#xff0c;如何對system.img進行掛載和解除掛載是需要掌握的能力 基礎知識 system.img、vendor.img 都存在兩種格式raw,sparse &#xff0c;在ubuntu命令窗口下執行下執行&am…

深度學習之生成對抗網絡 BigGAN

BigGAN(Big Generative Adversarial Networks)是生成對抗網絡(GAN)的一種變體,專注于生成高質量、大尺寸的圖像。BigGAN 是由 DeepMind 的研究人員于 2018 年提出的。其核心思想是通過增加模型的規模(更深的網絡和更多的參數)來提高生成圖像的質量,同時引入一些新的技術…

便簽 Pro(Mac 智能便簽工具)專業版怎么樣,值得購買嗎?

使用 Mac 的小伙伴平時都是怎么記錄工作生活中的碎片信息&#xff1f;用聊天軟件&#xff0c;還是系統備忘錄呢&#xff1f; 實際體驗下來&#xff0c;其實都難以稱得上好用。 趕緊來了解一下 Mac 多彩思維速記工具便簽 Pro&#xff01;擁有智能邊框大小、iCloud 同步、歷史記…

矩陣置零解題

給定一個 m x n 的矩陣&#xff0c;如果一個元素為 0 &#xff0c;則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 示例 1&#xff1a; 輸入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 輸出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例 2&#xff1a; 輸入&…

VUE3解決跨域問題

本文基于vue3 vite element-plus pnpm 報錯&#xff1a;**** has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource. 原因&#xff1a;前端不能直接訪問其他IP&#xff0c;需要用vite.config.ts &#xff0…

onvif 基本概念

media_server、device_server和event_server是三個重要的服務。 1. media_server 功能&#xff1a;media_server服務主要負責處理媒體流相關的請求&#xff0c;包括視頻和音頻流的傳輸、控制等。實現&#xff1a;該服務通常使用RTSP&#xff08;Real Time Streaming Protocol…

API-本地存儲

學習目標&#xff1a; 掌握本地存儲 學習內容&#xff1a; 本地存儲介紹本地存儲分類存儲復雜數據類型 本地存儲介紹&#xff1a; 以前我們頁面寫的數據一刷新頁面就沒有了&#xff0c;是不是? 隨著互聯網的快速發展&#xff0c;基于網頁的應用越來越普遍&#xff0c;同時也…

算法基礎入門 - 2.棧、隊列、鏈表

文章目錄 算法基礎入門第二章 棧、隊列、鏈表2.1 隊列2.2 棧2.3 紙牌游戲2.4 鏈表如何建立鏈表?1.我們需要一個頭指針(head)指向鏈表的初始。鏈表還沒建立時頭指針head為空2.建立第一個結點3.設置剛創建的這個結點的數據域(左半)和指針域(右半)4.設置頭指針,頭指針可方便…

【鴻蒙學習筆記】運算符

官方文檔&#xff1a;ArkTS語言介紹 目錄標題 賦值運算符比較運算符一元運算符&#xff1a;自增自減運算符二元運算符位運算符邏輯運算符 賦值運算符 運算符解釋解釋賦值運算符x x y加-x x - y減*x x * y乘/x x / y除%x x % y取余<<x x << y按位左移>&…