Vue3-04_組件基礎_下

props驗證

指的是在封裝組件時對外界傳遞過來的 props 數據進行合法性的校驗,從而防止數據不合法的問題。

使用數組類型的 props 節點的缺點是無法為每個 prop 指定具體的數據類型。
使用對象類型的 props 節點,可以對每個 prop 進行數據類型的校驗,

驗證方法:

對象類型的 props 節點提供了多種數據驗證方案,例如:
① 基礎的類型檢查
② 多個可能的類型
③ 必填項校驗
④ 屬性默認值
⑤ 自定義驗證函數

export default {props: {// 基礎類型檢查//(給出 `null` 和 `undefined` 值則會跳過任何類型檢查)propA: Number,// 多種可能的類型propB: [String, Number],// 必傳,且為 String 類型propC: {type: String,required: true},// Number 類型的默認值propD: {type: Number,default: 100},// 對象類型的默認值propE: {type: Object,// 對象或者數組應當用工廠函數返回。// 工廠函數會收到組件所接收的原始 props// 作為參數default(rawProps) {return { message: 'hello' }}},// 自定義類型校驗函數// 在 3.4+ 中完整的 props 作為第二個參數傳入propF: {validator(value, props) {// The value must match one of these stringsreturn ['success', 'warning', 'danger'].includes(value)}},// 函數類型的默認值propG: {type: Function,// 不像對象或數組的默認,這不是一個// 工廠函數。這會是一個用來作為默認值的函數default() {return 'Default function'}}}
}

計算屬性

計算屬性本質上就是一個 function 函數,它可以實時監聽 data 中數據的變化,并 return 一個計算后的新值,
供組件渲染 DOM 時使用

聲明計算屬性

為什么需要計算屬性:

表達式雖然方便,但也只能用來做簡單的操作。如果在模板中寫太多邏輯,會讓模板變得臃腫,難以維護。使用計算屬性直接返回計算后的結果,使得邏輯主要在函數里處理,模板會更簡潔。
① 計算屬性必須定義在 computed 節點中
② 計算屬性必須是一個 function 函數
③ 計算屬性必須有返回值
④ 計算屬性必須當做普通屬性使用

計算屬性與方法

計算屬性值會基于其響應式依賴被緩存。一個計算屬性僅會在其響應式依賴更新時才重新計算。相比之下,方法調用總是會在重渲染發生時再次執行函數。

官方文檔補充

https://cn.vuejs.org/guide/essentials/computed

監聽事件

什么監聽事件

在封裝組件時,為了讓組件的使用者可以監聽到組件內狀態的變化,(比如父子組件之間)此時需要用到組件的監聽事件。

如何使用監聽事件

父組件監聽

可以通過 v-on 或 @ 來選擇性地監聽子組件上拋的事件,就像監聽原生 DOM 事件那樣:

  <BlogPost@enlarge-text="postFontSize += 0.1"/>
子組件聲明與調用

聲明:
可以通過 emits 選項來聲明需要拋出的事件:


<!-- BlogPost.vue -->
<script>
export default {props: ['title'],emits: ['enlarge-text']
}
</script>

調用
(1)可以直接通過綁定點擊事件觸發

   <button @click="$emit('enlarge-text')">Enlarge text</button>
(2)也可以通過函數中調用this.$emit 觸發
 methods:{test(){this.$emit('enlarge-text')}}<button @click="test">Enlarge text</button>
參數傳遞

所有傳入 e m i t ( ) 的額外參數都會被直接傳向監聽器。舉例來說, emit() 的額外參數都會被直接傳向監聽器。舉例來說, emit()的額外參數都會被直接傳向監聽器。舉例來說,emit(‘foo’, 1, 2, 3) 觸發后,監聽器函數將會收到這三個參數值。

父組件中監聽事件,我們可以先簡單寫一個內聯的箭頭函數作為監聽器,此函數會接收到事件附帶的參數:

<MyButton @increase-by="(n) => count += n" />

也可以用一個組件方法來作為事件處理函數,該方法也會接收到事件所傳遞的參數:

 <MyButton @increase-by="increaseCount" />methods: {increaseCount(n) {this.count += n}}

更多案例

https://cn.vuejs.org/guide/components/events.html#event-arguments

todolist demo

使用element-plus + vue實現的 todo list demo 主要邏輯在代碼文件中
https://github.com/nebofeng/Vue3_demo/tree/master/02-todolist

IT 內容具有時效性,未避免更新后未同步,請點擊查看最新內容:Vue3-04_組件基礎_下
文章首發于:https://nebofeng.com/2024/06/28/vue3-04_%e7%bb%84%e4%bb%b6%e5%9f%ba%e7%a1%80_%e4%b8%8b/

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

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

相關文章

【云服務-5】Elasticsearch

Elasticsearch是什么&#xff1f;和大數據的關系&#xff1f; Elasticsearch 是一個分布式、開源的搜索和分析引擎,建立在 Apache Lucene 庫之上。它的主要特點包括: &#xff08;1&#xff09;快速、可擴展的搜索和分析能力 &#xff08;2&#xff09;支持多租戶和高可用性 …

python--基礎篇--正則表達式--py腳本--題目解答

文章目錄 驗證輸入用戶名和QQ號是否有效并給出對應的提示信息從一段文字中提取出國內手機號碼替換字符串中的不良內容拆分長字符串 驗證輸入用戶名和QQ號是否有效并給出對應的提示信息 """ 驗證輸入用戶名和QQ號是否有效并給出對應的提示信息要求&#xff1a;用…

常用數據庫簡單介紹

1. MySQL 優勢&#xff1a; 開源和免費&#xff1a;MySQL 是一個開源數據庫&#xff0c;擁有龐大的社區支持&#xff0c;易于獲取和使用。性能優秀&#xff1a;對于中小型項目&#xff0c;MySQL 提供了高效的性能和響應速度。跨平臺支持&#xff1a;MySQL 可以在各種操作系統…

扎克伯格抨擊閉源人工智能競爭對手試圖“創造上帝”

Meta 首席執行官馬克-扎克伯格&#xff08;Mark Zuckerberg&#xff09;在周四發表的一篇訪談中談到了他對人工智能未來的看法&#xff0c;他深信"不會只有一種人工智能"。扎克伯格強調了開源的價值&#xff0c;即把人工智能工具交到許多人手中&#xff0c;他還不忘貶…

抖音微短劇小程序源碼搭建:實現巨量廣告數據高效回傳

在數字化營銷日益盛行的今天&#xff0c;抖音微短劇小程序已成為品牌與觀眾互動的新渠道。這些短小精悍的劇目不僅能迅速抓住用戶的注意力&#xff0c;還能有效提升品牌的知名度和用戶黏性。然而&#xff0c;想要充分利用這一營銷工具&#xff0c;關鍵在于如何高效地追蹤廣告數…

堆的 shift down

堆的 shift down 堆(Heap)是一種特殊的完全二叉樹,它通常用于實現優先隊列。在堆中,每個節點的值都大于或等于(在最大堆中)或小于或等于(在最小堆中)其子節點的值。堆的操作包括插入元素(shift up)和刪除元素(shift down 或 bubble down)。 本文將重點介紹堆的 s…

HDFS EC文件損壞恢復方法

HDFS EC低版本存在許多bug&#xff0c;導致文件損壞&#xff0c;這些bug是在一定的條件下才有機率性的錯誤重構。 我們當前版本是3.1.1&#xff0c;使用前已修復部署EC patch了&#xff0c;但還是損壞了文件&#xff0c;而且這些文件是無任何提示異常的。是在進行讀數據的時候…

從0開始學習pyspark--pyspark的啟動模式[第1節]

PySpark是Apache Spark的Python API&#xff0c;它能夠在分布式計算環境中處理大規模數據。PySpark可以在幾種不同的模式下運行&#xff0c;主要包括以下三種&#xff1a; 本地模式&#xff08;Local Mode&#xff09;集群模式&#xff08;Cluster Mode&#xff09;客戶端模式…

springboot中使用springboot cache

前言&#xff1a;SpringBoot中使用Cache緩存可以提高對緩存的開發效率 此圖片是SpringBootCache常用注解 Springboot Cache中常用注解 第一步&#xff1a;引入依賴 <!--緩存--><dependency><groupId>org.springframework.boot</groupId><artifactId…

使用ExpandableListView創建可擴展列表

使用ExpandableListView創建可擴展列表 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們將深入探討如何使用Android中的ExpandableListView創建可擴展列…

【linux】gcc快速入門教程

目錄 一.gcc簡介 二.gcc常用命令 一.gcc簡介 gcc 是GNU Compiler Collection&#xff08;GNU編譯器套件&#xff09;。就是一個編譯器。編譯一個源文件的時候可以直接使用&#xff0c;但是源文件數量太多時&#xff0c;就很不方便&#xff0c;于是就出現了make 工具 二.gcc…

vue實現鼠標拖動元素把二級分組放入一級分組

拖動案例demo實現 <template><div><div class"group one-level"><divclass"group-item"v-for"(group, index) in groups":key"group.id"draggable"true"dragstart"dragStart(group, $event)"…

STM32第十一課:ADC采集光照

文章目錄 需求一、ADC概要二、實現流程1.開時鐘&#xff0c;分頻&#xff0c;配IO2.配置ADC工作模式3.配置通道4.復位校準5.數值的獲取 三、需求的實現總結 需求 通過ADC轉換實現光照亮度的數字化測量&#xff0c;最后將實時測量的結果打印在串口上。 一、ADC概要 ADC全稱是A…

【面試系列】Python 高頻面試題

歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;歡迎訂閱相關專欄&#xff1a; ?? 全網最全IT互聯網公司面試寶典&#xff1a;收集整理全網各大IT互聯網公司技術、項目、HR面試真題. ?? AIGC時代的創新與未來&#xff1a;詳細講解AIGC的概念、核心技術、…

手機數據恢復篇:如何在Android手機上查找和恢復已刪除的文件

移動設備中的回收站已成為 Android 用戶的一項基本功能&#xff0c;它提供了防止意外刪除的安全網。與計算機一樣&#xff0c;移動回收站會臨時存儲已刪除的文件&#xff0c;允許用戶在需要時檢索它們。此功能在當今的數字時代特別有用&#xff0c;因為只需輕輕一按&#xff0c…

SEO與AI的結合:如何用ChatGPT生成符合搜索引擎優化的內容

在當今數字時代&#xff0c;搜索引擎優化&#xff08;SEO&#xff09;已成為每個網站和內容創作者都必須掌握的一項技能。SEO的主要目標是通過優化內容&#xff0c;使其在搜索引擎結果頁面&#xff08;SERP&#xff09;中排名更高&#xff0c;從而吸引更多的流量。然而&#xf…

使用 AutoGen 的 AI 智能體設計模式

1.Auto Gen框架 在Auto中,每種智能體分別扮演不同的角色。 ConversableAgent 作為最高級別的智能體抽象,為所有具體智能體提供了基礎的通信能力。這包括發送和接收信息的能力,以及基于這些信息進行內部狀態更新的能力。所有從這個類派生的智能體都繼承了這些基本功能…

硬件實用技巧:剛撓板pcb是什么

若該文為原創文章&#xff0c;轉載請注明原文出處 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140060334 長沙紅胖子Qt&#xff08;長沙創微智科&#xff09;博文大全&#xff1a;開發技術集合&#xff08;包含Qt實用技術、樹莓派、三維、OpenCV…

elasticsearch導出和導入數據

這里我使用的是離線操作的方式&#xff0c; 前提&#xff1a;安裝了node, 安裝elasticdump命令&#xff1a; npm install elasticdump -g 安裝成功后進入elasticdump所在的目錄&#xff1a; cd /usr/local/nodejs/lib/node_modules/elasticdump/bin 導出目標索引的映射結構…

Helm部署高可用redis k8s分片集群

安裝部署 添加bitnami倉庫并查找redis helm repo add bitnami https://charts.bitnami.com/bitnami ? helm repo update [kmning@k8s-register-node ~]$ helm search repo redis NAME CHART VERSION APP VERSION DESCRIPTION bitnami/redis …