《vue3學習手記3》

標簽的ref屬性

vue3和vue2中的ref屬性:
用在普通DOM標簽上,獲取的是DOM節點
ref用在組件標簽上,獲取的是組件實例對象
區別在于:
1.vue3中person子組件中的數據父組件App不能直接使用,需要引入并使用defineExpose才可以;
vue2中person子組件中的數據父組件App可直接使用。
2.vue2中獲取節點:
<h2 ref="title">重慶</h2>
this.$refs.title
vue2中獲取組件實例對象:
<Person ref="per"/>
this.$refs.per
3.vue3中的獲取語法見以下代碼:

<template><div class="app"><h2>大理</h2><h2 ref="title">重慶</h2><h2>大西北</h2><button @click="getDOM">點我獲取節點</button></div>
</template><script lang="ts" setup name="Person">//知識點:標簽的ref屬性    用于獲取DOM元素或者組件實例對象時使用// 要求一:獲取重慶這條信息的DOM節點import { ref,defineExpose } from "vue"let title=ref()function getDOM(){console.log(title.value)}// 要求二:獲取組件實例對象(代碼見App組件)// 要求三:在person組件里添加一些數據// 解析:在vue3中,person組件中的數據App組件如果想要使用需要引入并使用defineExpose才可以。(defineExpose也可以不引用,直接使用)let a= ref(0)let b= ref(1)let c= ref(2)defineExpose({a,b,c})   //這樣父組件就獲取到了person里的數據
</script>

App.vue組件

<template><Person ref="per"/><button @click="getPerson">點我獲取person組件實例</button>
</template><script lang="ts" setup name="App">import Person from "./components/Person.vue"  // 只需引入,不用注冊組件,vue3引入之后會自動注冊import {ref} from "vue"// 要求二:獲取組件實例對象let per=ref()function getPerson(){console.log(per.value)} 
</script>

TS接口、泛型、自定義類型

**作用:**提升代碼的可靠性、可維護性和開發效率

<template><div class="app"><h2>{{ person.name }}</h2><h2>{{ personlist[1].name }}</h2></div>
</template><script lang="ts" setup name="Person">
import {type personInter,type persons} from "../types"
// TS的接口、泛型、自定義類型    // 作用:給代碼設置一定的約束,防止出錯// 知識點一:TS的接口   
// ====================================================================//要求一:給person對象設置一定的約束//首先創建types文件夾,定義接口 let person:personInter={id:"asycs01",name:"李華",age:18}// 這樣使用接口之后,如果打錯單詞或者屬性類型會給提示// ====================================================================// 知識點二:TS的泛型  <>//要求二:給personlist數組設置一定的約束let personlist:Array<personInter>=[{id:"asycs01",name:"李華",age:18},{id:"asycs02",name:"小明",age:20},{id:"asycs03",name:"小紅",age:21}]// ====================================================================// 知識點三:TS的自定義類型  <>//要求三:基于要求二的高級寫法(見index.ts)let personlist1:persons=[{id:"asycs01",name:"李華",age:18},{id:"asycs02",name:"小明",age:20},{id:"asycs03",name:"小紅",age:21}]
// ====================================================================// 知識點四:需要使用reactive時的寫法://要求四:要將數組中的數據變為響應式的數據let personlist2=reactive<persons>([{id:"asycs01",name:"李華",age:18},{id:"asycs02",name:"小明",age:20},{id:"asycs03",name:"小紅",age:21}])
</script>

types/index.ts:

// 定義接口
export interface personInter{id:string,name:string,age:number,gender?:string   //當想要給某一個對象添加性別時這樣寫,但如果寫成gender:string就要給每一個屬性都添加gender
}
// export type persons=Array<personInter>
export type persons=personInter[]

父親給兒子傳遞參數

App.vue

<template><Person :personList="personList"/>
</template><script lang="ts" setup name="App">import Person from "./components/Person.vue"// 只需引入,不用注冊組件,vue3引入之后會自動注冊import {type persons} from "./types"import {reactive} from "vue"let personList=reactive<persons>([{id:"asycs01",name:"李華",age:18},{id:"asycs02",name:"小明",age:20},{id:"asycs03",name:"小紅",age:21}])</script>

Person.vue

<template><div class="app"><ul><li v-for="item in personList" :key="item.id">{{ item.name }}</li></ul></div>
</template><script lang="ts" setup name="Person">
import {type persons} from "../types"
import { withDefaults } from "vue";
// ===========================================================
//知識點一:defineProps 接收數據// 要求一:將App中的數據傳遞給Person// defineProps(["personList"])// ===========================================================//知識點二:defineProps 接收數據并限制接收數據的類型// defineProps<{personList:persons}>()  // {}中第一個參數是接收的對象,第二個參數是接口規范// ===========================================================//知識點三:defineProps 接收數據并限制接收數據的類型并限制必要性// defineProps<{personList?:persons}>() // ===========================================================//知識點三:defineProps 接收數據并限制接收數據的類型并限制必要性withDefaults(defineProps<{personList?:persons}>(),{personList:()=>[{id:"asycs01",name:"李華",age:18},{id:"asycs02",name:"小明",age:20}]})
</script>

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

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

相關文章

List基礎與難度題

1. 向 ArrayList 中添加元素并打印 功能描述&#xff1a; 程序創建一個空的 ArrayList 集合&#xff0c;用于存儲字符串類型的元素。向該 ArrayList 中依次添加指定的字符串元素。使用增強型 for 循環遍歷 ArrayList 中的所有元素&#xff0c;并將每個元素打印輸出到控制臺。 …

樓宇自控系統如何為現代建筑打造安全、舒適、節能方案

在科技飛速發展的當下&#xff0c;現代建筑對功能和品質的要求日益提升。樓宇自控系統作為建筑智能化的核心技術&#xff0c;宛如一位智慧的“管家”&#xff0c;憑借先進的技術手段&#xff0c;為現代建筑精心打造安全、舒適、節能的全方位解決方案&#xff0c;讓建筑真正成為…

綠算輕舟系列FPGA加速卡:驅動數字化轉型的核心動力【2】

工業與醫療&#xff1a;精準化的幕后推手 在工業4.0與智慧醫療領域&#xff0c;綠算輕舟FPGA加速卡通過實時信號處理與高精度控制&#xff0c;推動關鍵場景的技術升級。 工業自動化&#xff1a;在機器視覺質檢中&#xff0c;實現亞像素級缺陷檢測&#xff0c;產線檢測速度大幅…

uniapp-商城-22-頂部模塊

這里其實很復雜.我們在前面已經說了這個組件 shop-headbar ,這里來繼續說。 該組件實現一個高度的顯示以及圖片展示,包含logo 名稱 后臺管理以及避讓 導航欄 和 手機的狀態欄。 1 整體 代碼如下: <template><view class="headr" :style="{ hei…

利用Global.asax在ASP.NET Web應用中實現功能

Global.asax文件&#xff08;也稱為ASP.NET應用程序文件&#xff09;是ASP.NET Web應用程序中的一個重要文件&#xff0c;它允許您處理應用程序級別和會話級別的事件。下面介紹如何利用Global.asax來實現各種功能。 Global.asax基本結構 <% Application Language"C#&…

ReportLab 導出 PDF(頁面布局)

ReportLab 導出 PDF&#xff08;文檔創建&#xff09; ReportLab 導出 PDF&#xff08;頁面布局&#xff09; ReportLab 導出 PDF&#xff08;圖文表格) PLATYPUS - 頁面布局和排版 1. 設計目標2. 開始3. Flowables3.1. Flowable.draw()3.2. Flowable.drawOn(canvas,x,y)3.3. F…

Ubuntu下安裝Intel MKL完整指南

&#x1f9e0; Intel MKL 安裝指南&#xff08;Ubuntu 完整版&#xff09; 適用平臺&#xff1a;Ubuntu 18.04 / 20.04 / 22.04 更新時間&#xff1a;2025 年最新版&#xff08;適配 Intel oneAPI 2024&#xff09; ? 一、安裝方式選擇 安裝方式適合用戶群體特點推薦程度&…

HackMyVM Gigachad.

Gigachad 信息搜集 ┌──(root?kali)-[/home/kali] └─# nmap 192.168.214.85 Starting Nmap 7.95 ( https://nmap.org ) at 2025-04-16 07:42 EDT Nmap scan report for 192.168.214.85 Host is up (0.00011s latency). Not shown: 997 closed tcp ports (reset) PORT S…

大模型全景解析:從技術突破到行業變革

目錄 一、引言&#xff1a;人工智能的新紀元 二、大模型發展歷史與技術演進 1. 早期探索期&#xff08;2015-2017&#xff09;&#xff1a;從"人工智障"到初具規模 RNN/LSTM架構時代&#xff08;2013-2017&#xff09; Transformer革命&#xff08;2017&#xf…

49、Spring Boot 詳細講義(六)(SpringBoot2.x整合Mybatis實現CURD操作和分頁查詢詳細項目文檔)

項目文檔:銀行借據信息CURD操作和分頁查詢 一、項目概述 1. 項目簡介 本項目旨在使用Spring Boot框架整合MyBatis連接Mysql數據庫實現借據信息的增加、刪除、修改和查詢功能,同時支持分頁查詢,并提供對應的Restful風格的接口。 2.環境準備 2.1.工具和軟件準備 JDK(建議…

youtube視頻和telegram視頻加載原理差異分析

1. 客戶側緩存與流式播放機制?? 流式視頻應用&#xff08;如 Netflix、YouTube&#xff09;通過??邊下載邊播放??實現流暢體驗&#xff0c;其核心依賴以下技術&#xff1a; ??緩存預加載??&#xff1a;客戶端在后臺持續下載視頻片段&#xff08;如 DASH/HLS 協議的…

把城市變成智能生命體,智慧城市的神奇進化

智能交通系統的建立與優化 智能交通系統&#xff08;ITS&#xff09;是智慧城市建設的核心部分之一&#xff0c;旨在提升交通管理效率和安全性。該系統利用傳感器網絡、GPS定位技術以及實時數據分析來監控和管理城市中的所有交通流動。例如&#xff0c;通過部署于道路兩側或交…

Oracle 23ai Vector Search 系列之5 向量索引(Vector Indexes)

文章目錄 Oracle 23ai Vector Search 系列之5 向量索引Oracle 23ai支持的向量索引類型內存中的鄰居圖向量索引 (In-Memory Neighbor Graph Vector Index)磁盤上的鄰居分區矢量索引 (Neighbor Partition Vector Index) 創建向量索引HNSW索引IVF索引 向量索引示例參考 Windows 環…

cas 5.3單點登錄中心開發手冊

文檔格式PDF 只讀文檔。 代碼源碼。 一、適用對象 需要快速上手出成果的服務端開發人員&#xff0c;具備3年經驗java 開發&#xff0c;熟悉數據庫&#xff0c;基本的Linux操作系統配置。 工期緊張需要快速搭建以cas為基礎的統一登錄中心&#xff0c;遇到技術瓶頸&#xff0c…

行星際激波在日球層中的傳播:Propagation of Interplanetary Shocks in the Heliosphere (第一部分)

行星際激波在日球層中的傳播&#xff1a;Propagation of Interplanetary Shocks in the Heliosphere &#xff08;第二部分&#xff09;- Chapter 3: Solar and heliospheric physics 行星際激波在日球層中的傳播&#xff1a;Propagation of Interplanetary Shocks in the Hel…

Linux——消息隊列

目錄 一、消息隊列的定義 二、相關函數 2.1 msgget 函數 2.2 msgsnd 函數 2.3 msgrcv 函數 2.4 msgctl 函數 三、消息隊列的操作 3.1 創建消息隊列 3.2 獲取消息隊列并發送消息 3.3 從消息隊列接收消息recv 四、 刪除消息隊列 4.1 ipcrm 4.2 msgctl函數 一、消息…

藍橋杯常考排序

1.逆序 Collections.reverseOrder() 方法對列表進行逆序排序。通過 Collections.sort() 方法配合 Collections.reverseOrder()&#xff0c;可以輕松實現從大到小的排序。 import java.util.ArrayList; // 導入 ArrayList 類&#xff0c;用于創建動態數組 import java.util.C…

ILGPU的核心功能使用詳解

什么是ILGPU? ILGPU 是一種用于高性能 GPU 程序的新型 JIT&#xff08;即時&#xff09;編譯器 &#xff08;也稱為 kernels&#xff09;編寫的 .基于 Net 的語言。ILGPU 完全 用 C# 編寫&#xff0c;沒有任何原生依賴項&#xff0c;允許您編寫 GPU 真正可移植的程序。…

金融的未來

1. DeFi的爆發式增長與核心使命 DeFi&#xff08;去中心化金融&#xff09;的使命是重構傳統金融基礎設施&#xff0c;通過區塊鏈技術實現更高的透明度、可訪問性、效率、便利性和互操作性。其增長數據印證了這一趨勢&#xff1a; TVL&#xff08;總鎖定價值&#xff09;爆炸…

在Vue項目中查詢所有版本號為 1.1.9 的依賴包名 的具體方法,支持 npm/yarn/pnpm 等主流工具

以下是 在Vue項目中查詢所有版本號為 1.1.9 的依賴包名 的具體方法&#xff0c;支持 npm/yarn/pnpm 等主流工具&#xff1a; 一、使用 npm 1. 直接過濾依賴樹 npm ls --depth0 | grep "1.1.9"說明&#xff1a; npm ls --depth0&#xff1a;僅顯示直接依賴&#xf…