模板引用、組件基礎

#### 組件基礎

1. 定義和使用簡單組件

- ![alt text](./img/image-2.png)

```vue

<!-- 在App.vue里 -->

<script setup>import HelloWorld from './components/HelloWorld.vue'

</script>

<template><HelloWorld></HelloWorld></template>

<!-- 在HelloWorld.vue里 -->

<template><h2>Hello,Vue3!</h2></template>

<script setup></script>

```

2. 傳遞屬性(Props)

```vue

<!-- 在App.vue里 -->

<script setup>

import HelloWorld from './components/HelloWorld.vue'

</script>

<template>

<HelloWorld title="李煥英"></HelloWorld>

<HelloWorld title="生命一號"></HelloWorld>

<HelloWorld title="希望一號"></HelloWorld>

<HelloWorld title="神州20號"></HelloWorld>

</template>

<!-- 在HelloWorld.vue里 -->

<template>

<h2>Hello,{{title}}!</h2>

</template>

<script setup>

defineProps(['title'])

</script>

```

3. 自定義事件

- 注意:【reactive({num1:0,num2:0})】【v-model="obj.num1"】

```vue

<!-- 在App.vue里 -->

<template>

? <ButtonCounter :count="count" @update:count="A"></ButtonCounter>

? <p>父組件中的計數值:{{ count }}</p>

</template>

<script setup>

import ButtonCounter from './components/ButtonCounter.vue'

import {ref} from 'vue'

let count = ref(0)

const A = (newA)=>{

? count.value = newA

}

</script>

<!-- ButtonCounter.vue里 -->

<template>

? <input type="button" :value="'點擊次數:'+count" @click="btn">

</template>

<script setup>

? import { defineEmits,defineProps } from 'vue';

? const props = defineProps(['count'])

? const emit = defineEmits(['update:count'])

? const btn = ()=>{

? ? emit('update:count',props.count + 1)

? }

</script>

```


?

### 筆記

#### 組件基礎

1. 單文件組件 :一般用于構建步驟,將組件定義在一個單獨的 .vue 文件中

- 在 `ButtonCounter.vue` 文件中:

```vue

<script setup>

? import { ref } from 'vue'

? const count = ref(0)

</script>

<template>

? <button @click="count++">{{ count }}</button>

</template>

```

2. JavaScript 對象定義組件:不使用構建步驟時,組件以包含 Vue 特定選項的 JavaScript 對象來定義

```vue

<template>

? <button @click="count++">{{ count }}</button>

</template>

<script>

import { ref } from 'vue'

export default {

? setup() {

? ? const count = ref(0)

? ? return { count }

? }

}

</script>

```

#### 傳遞 props

1. 概念:Props 是一種特別的 attributes,用于向組件中傳遞數據。例如,構建博客時,向博客文章組件傳遞標題和內容等數據就會使用到 props。

- 在組件中需要先聲明 props。使用 `<script setup>` 時,可通過 `defineProps` 宏來聲明

? - 在 `ButtonCounter.vue` 文件中:

? ```vue

? <script setup>

? ? defineProps(['title'])

? </script>

? <template>

? ? <h4>{{ title }}</h4>

? </template>

? ```

- 若未使用 `<script setup>`,則需以 `props` 選項的方式聲明,`props` 對象會作為 `setup()` 函數的第一個參數被傳入。

```js

? ? export default {

? props: ['title'],

? setup(props) {

? ? console.log(props.title)

? }

}

```

2. 傳遞 props** :在使用組件時,以自定義 attribute 的形式傳遞數據給組件。`<BlogPost title="My journey with Vue" />`


?

#### 監聽事件

1. 場景:有時子組件需要與父組件進行交互。在博客文章組件中實現點擊按鈕放大文字的功能

- 在子組件中添加按鈕,并通過 `$emit` 方法拋出事件。

? - 在 `BlogPost.vue` 文件中:

? ```vue

? <template>

? ? <div class="blog-post">

? ? ? <h4>{{ title }}</h4>

? ? ? <button @click="$emit('enlarge-text')">Enlarge text</button>

? ? </div>

? </template>

? - 父組件監聽該事件并做出響應

? ? ? <BlogPost ?@enlarge-text="postFontSize += 0.1"/>

? ```

2. 事件聲明:可通過 `defineEmits` 宏來聲明需要拋出的事件,還可以對事件的參數進行驗證。

- 在 `BlogPost.vue` 文件中

```vue

<script setup>

? defineProps(['title'])

? defineEmits(['enlarge-text'])

</script>

```

3. 若未使用 `<script setup>`,可通過 `emits` 選項定義組件會拋出的事件,并從 `setup()` 函數的第二個參數,即 `setup` 上下文對象上訪問到 `emit` 函數

```js

export default {

? emits: ['enlarge-text'],

? setup(props, ctx) {

? ? ctx.emit('enlarge-text')

? }

}

```

#### 模板引用

1. 用途:在某些情況下需要直接訪問底層 DOM 元素,可使用特殊的 `ref attribute`。

- 獲取引用:`useTemplateRef()`

```vue

<script setup>

? import { useTemplateRef, onMounted } from 'vue'

? const input = useTemplateRef('my-input')

? onMounted(() => {

? ? input.value.focus()

? })

</script>

<template>

? <input ref="my-input" />

</template>`

```


?

### 示例代碼

- ButtonCount.vue

```vue

<template>

? {{ title }}-{{ author }}

</template>

<script>

export default {

? props: ['title', 'author'],

? setup(props) {

? ? console.log(props)

? ? return { }

? }

}

</script>

```

或使用 `<script setup>`:

```vue

<script setup>

let props = defineProps(['title', 'author'])

console.log(props)

</script>

<template>

? {{ title }}-{{ author }}

</template>

```

2. App.vue

```vue

<script setup>

import { ref } from 'vue'

import ButtonCount from './components/ButtonCount.vue'

function uu() {

? console.log("我是一個自定義的事件,名叫uu")

}

let txt = ref("九九艷陽天")

</script>

<template>

? <input type="text" ref="txtUsername" @keypress.enter="uu">

? <ButtonCount :title="txt"></ButtonCount>

</template>

```

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

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

相關文章

深入探索 RKNN 模型轉換之旅

在人工智能蓬勃發展的當下&#xff0c;邊緣計算領域的應用愈發廣泛。瑞芯微的 RKNN 技術在這一領域大放異彩&#xff0c;它能讓深度學習模型在其芯片平臺上高效運行。而在整個應用流程中&#xff0c;模型轉換是極為關鍵的一環&#xff0c;今天就讓我們一同深入這個神奇的 RKNN …

iframe嵌套網站的安全機制實現

背景&#xff1a; 公司內部有一套系統A部署在內網&#xff0c;這套系統嵌套了B網站&#xff08;也是內網&#xff09;&#xff0c;只有內網才能訪問。現在需要將這個A系統暴露到公網。B系統的安全策略比較低&#xff0c;想快速上線并提高B系統的安全性。 通過 Nginx 代理層 設置…

青少年編程與數學 02-019 Rust 編程基礎 08課題、字面量、運算符和表達式

青少年編程與數學 02-019 Rust 編程基礎 08課題、字面量、運算符和表達式 一、字面量1. 字面量的分類1.1 整數字面量1.2 浮點數字面量1.3 字符字面量1.4 字符串字面量1.5 布爾字面量1.6 字節數組字面量 2. 字面量的類型推斷3. 字面量的用途4. 字面量的限制字面量總結 二、運算符…

危化品安全員職業發展方向的優劣對比

以下是危化品安全員不同職業發展方向的優劣對比&#xff1a; 縱向晉升 優勢 職業路徑清晰&#xff1a;從危化品安全員逐步晉升為安全主管、安全經理、安全總監等管理職位&#xff0c;層級明確&#xff0c;有較為清晰的上升通道。管理能力提升&#xff1a;隨著職位上升&#x…

談AI/OT 的融合

過去的十幾年間&#xff0c;工業界討論最多的話題之一就是IT/OT 融合&#xff0c;現在&#xff0c;我們不僅要實現IT/OT 的融合&#xff0c;更要面向AI/OT 的融合。看起來不太靠譜&#xff0c;卻留給我們無限的想象空間。OT 領域的專家們不要再當“九斤老太”&#xff0c;指責這…

計算機網絡核心技術解析:從基礎架構到應用實踐

計算機網絡作為現代信息社會的基石&#xff0c;承載著全球數據交換與資源共享的核心功能。本文將從網絡基礎架構、核心協議、分層模型到實際應用場景&#xff0c;全面解析計算機網絡的核心技術&#xff0c;并結合行業最新趨勢&#xff0c;為讀者構建系統的知識體系。 一、計算機…

大規模數據并行排序策略(Parallel Sample Sort)

大規模數據并行排序策略 對于上億條大型記錄的并行排序&#xff0c;基于MPI的多節點環境&#xff0c;可以采用以下策略來充分利用內存和網絡資源&#xff1a; 推薦算法&#xff1a;樣本排序(Sample Sort) 樣本排序是大規模并行排序的高效算法&#xff0c;特別適合MPI環境&am…

o.redisson.client.handler.CommandsQueue : Exception occured. Channel

1&#xff0c; 版本 <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>2.15.2</version> </dependency>2&#xff0c;問題 2025-05-12 10:46:47.436 ERROR 27780 --- [sson-netty-5-…

Kotlin跨平臺Compose Multiplatform實戰指南

Kotlin Multiplatform&#xff08;KMP&#xff09;結合 Compose Multiplatform 正在成為跨平臺開發的熱門選擇&#xff0c;它允許開發者用一套代碼構建 Android、iOS、桌面&#xff08;Windows/macOS/Linux&#xff09;和 Web 應用。以下是一個實戰指南&#xff0c;涵蓋核心概念…

【Jenkins簡單自動化部署案例:基于Docker和Harbor的自動化部署流程記錄】

摘要 本文記錄了作者使用Jenkins時搭建的一個簡單自動化部署案例&#xff0c;涵蓋Jenkins的Docker化安裝、Harbor私有倉庫配置、Ansible遠程部署等核心步驟。通過一個SpringBoot項目 (RuoYi) 的完整流程演示&#xff0c;從代碼提交到鏡像構建、推送、滾動更新&#xff0c;逐步實…

【Git】GitHub上傳圖片遇到的問題

一開始我直接在網頁上拖拽上傳&#xff0c;會說“網頁無法正常運作”。 采用git push上去&#xff1a; git clone https://github.com/your-username/your-repo-name.git cd your-repo-name git add . git commit -m "Add large images" git push origin main報錯&…

【落羽的落羽 C++】stack和queue、deque、priority_queue、仿函數

文章目錄 一、stack和queue1. 概述2. 使用3. 模擬實現 二、deque三、priority_queue1. 概述和使用2. 模擬實現 四、仿函數 一、stack和queue 1. 概述 我們之前學習的vector和list&#xff0c;以及下面要認識的deque&#xff0c;都屬于STL的容器&#xff08;containers&#x…

用生活例子通俗理解 Python OOP 四大特性

讓我們用最生活化的方式&#xff0c;結合Python代碼&#xff0c;來理解面向對象編程的四大特性。 1. 封裝&#xff1a;像使用自動售貨機 生活比喻&#xff1a; 你只需要投幣、按按鈕&#xff0c;就能拿到飲料 不需要知道機器內部如何計算找零、如何運送飲料 如果直接打開機…

軟件安全(三)實現后門程序

如下是一個經典的后門程序 #define _WINSOCK_DEPRECATED_NO_WARNINGS 1 #include<WinSock2.h> #include<windows.h> #include<iostream> #pragma comment(lib, "ws2_32.lib")int main() {//初始化網絡環境WSADATA wsaData;int result WSAStartup…

深入理解高性能網絡通信:從內核源碼到云原生實踐

深入理解高性能網絡通信&#xff1a;從內核源碼到云原生實踐 前言 隨著互聯網業務規模的高速增長&#xff0c;服務端網絡通信能力成為系統性能的核心瓶頸。如何支撐百萬級連接、在極限場景下實現低延遲高吞吐&#xff1f;本篇博客將圍繞Linux通信機制內核剖析、性能調優實戰、…

從實戰看軟件測試與質量管理:方法、過程與質量的全景解讀

作為一名高級軟件測試工程師&#xff0c;在過往多個大型系統項目的測試工作中&#xff0c;我深刻體會到&#xff1a;軟件測試不僅是產品質量的“守門員”&#xff0c;更是項目成功的“加速器”。今天這篇文章&#xff0c;我將站在實戰角度&#xff0c;結合具體案例&#xff0c;…

Megatron系列——流水線并行

內容總結自&#xff1a;bilibili zomi 視頻大模型流水線并行 注&#xff1a;這里PipeDream 1F1B對應時PP&#xff0c;Interleaved 1F1B對應的是VPP 1、樸素流水線并行 備注&#xff1a; &#xff08;1&#xff09;紅色三個圈都為空泡時間&#xff0c;GPU沒有做任何計算 &am…

在Web應用中集成Google AI NLP服務的完整指南:從Dialogflow配置到高并發優化

在當今數字化客服領域,自然語言處理(NLP)技術已成為提升用戶體驗的關鍵。Google AI提供了一系列強大的NLP服務,特別是Dialogflow,能夠幫助開發者構建智能對話系統。本文將詳細介紹如何在Web應用中集成這些服務,解決從模型訓練到高并發處理的全套技術挑戰。 一、Dialogflow…

Wi-Fi網絡角色及功能詳解

在 Wi-Fi 網絡中&#xff0c;不同的角色和組件協同工作以實現無線通信。以下是 Wi-Fi 中的主要角色及其功能&#xff1a; 1. 基礎設施模式&#xff08;Infrastructure Mode&#xff09; 這是最常見的 Wi-Fi 網絡架構&#xff0c;包含以下核心角色&#xff1a; 接入點&#xff…

密碼學--希爾密碼

一、實驗目的 1、通過實現簡單的古典密碼算法&#xff0c;理解密碼學的相關概念 2、理解明文、密文、加密密鑰、解密密鑰、加密算法、解密算法、流密碼與分組密碼等。 二、實驗內容 1、題目內容描述 ①定義分組字符長度 ②隨機生成加密密鑰&#xff0c;并驗證密鑰的可行性 …