Vue3 組件

文章目錄

  • Vue3 組件
    • 概述
    • 根組件
    • 定義和使用組件
    • 樣式控制
      • 全局樣式
      • 局部樣式
      • 深度樣式

Vue3 組件

概述

組件允許我們將 UI 劃分為獨立的、可重用的部分,并且可以對每個部分進行單獨的思考。在實際應用中,組件常常被組織成層層嵌套的樹狀結構:在這里插入圖片描述

根組件

我們傳入 createApp 的對象實際上是一個組件,每個應用都需要一個“根組件”,其他組件將作為其子組件。

如果你使用的是單文件組件,我們可以直接從另一個文件中導入根組件。

import { createApp } from 'vue'
// 從一個單文件組件中導入根組件
import App from './App.vue'const app = createApp(App)

定義和使用組件

src/components 目錄下定義 HelloWorld 組件:

<script setup >
import HelloWorldChild from "./HelloWorldChild.vue";
</script><template><h3>HelloWorld組件</h3><div>HelloWorld的div</div><p>aaaaaaaaaaaaaaa</p>
</template>

在 App 組件中使用:

<script setup>
import {ref} from "vue"
// 引入HelloWorld組件
import HelloWorld from "./components/HelloWorld.vue";const count = ref(0)
const incrementCount = () => {count.value++
}
</script><template><div><h2>App組件</h2><p>{{ count }}</p><button @click="incrementCount">count++</button><!--使用HelloWorld組件--><HelloWorld/></div>
</template>

效果:

在這里插入圖片描述

樣式控制

全局樣式

在組件中定義的樣式,默認是全局有效的。

這是因為App組件的style標簽中的樣式,在打包后就會生成全局樣式,沒有額外添加其他的限制條件。因此App組件中的樣式既影響了當前組件的div,也影響了子組件的所有div和外部頁面中的div。

定義App組件:

<script setup>
import {ref} from "vue"
import HelloWorld from "./components/HelloWorld.vue";const count = ref(0)
const incrementCount = () => {count.value++
}
</script><template><div><h2>App組件</h2><p>{{ count }}</p><button @click="incrementCount">count++</button><HelloWorld/></div>
</template><style>
div {border: 1px solid red;margin: 20px;
}
</style>

定義HelloWorld組件:

<template><h3>HelloWorld組件</h3><div>HelloWorld的div</div>
</template>

效果:

在這里插入圖片描述

局部樣式

Vue3 的 style 標簽中的樣式默認是全局的,但如果只針對某個組件內的標簽進行樣式控制,而不影響外部和內部子組件中標簽的樣式,可以在 style 標簽中添加 scoped 屬性,表示局部作用域樣式。

scoped 也就是 scoped = true 的簡寫。

修改子組件樣式:

<template><h3>HelloWorld組件</h3><div>HelloWorld的div</div><p>aaaaaaaaaaaaaaa</p>
</template><style scoped>
p {background: #ccc;
}
</style>

查看代碼結構:

在這里插入圖片描述

scoped原理:

  • 當組件添加 scoped 屬性后,該組件內的所有標簽都會自動添加 data-v-xxx 的屬性,表示唯一標識。
  • 同時 style中定義的樣式選擇器中也會添加 data-v-xxx 的屬性標簽,這樣局部作用域的樣式只能影響當前組件。

深度樣式

如果想讓局部樣式影響子組件,可以使用 Vue3 提供的深度作用域選擇器 :deep()

定義 HelloWorldChild 組件:

<template><div><h4>HelloWorldChild組件</h4><p>HelloWorld的p標簽</p></div>
</template>

在 HelloWorld 組件中使用:

<script setup>
import HelloWorldChild from "./HelloWorldChild.vue";
</script><template><div><h3>HelloWorld組件</h3><div>HelloWorld的div</div><p>HelloWorld的p標簽</p><HelloWorldChild/></div>
</template><style scoped>
div p {background: #ccc;
}div h4 {color: red;
}
</style>

效果:

在這里插入圖片描述

因為 HelloWorld 組件使用 scoped 屬性,因此 div pdiv h4 的樣式沒有出現 HelloWorldChild 子組件中。

在 HelloWorld 組件中使用 :deep() 選擇器:

<style scoped>
div :deep(p) {background: #ccc;
}div :deep(h4) {color: red;
}
</style>

效果:

在這里插入圖片描述

原理:會生成新的屬性選擇器。

在這里插入圖片描述

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

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

相關文章

怎么在家訪問公司服務器?

在日常工作中&#xff0c;特別是對信息技術從業者而言&#xff0c;工作往往離不開公司的服務器。他們需要定期訪問服務器&#xff0c;獲取一些關鍵的機密文件或數據。如果您在家辦公&#xff0c;并且需要處理未完成的任務&#xff0c;同時需要從公司服務器獲取所需的數據&#…

AI 自動化編程對編程教育的影響

AI 自動化編程的未來 引言 你是否曾想過&#xff0c;未來的程序員需要掌握哪些技能呢&#xff1f;隨著人工智能的迅猛發展&#xff0c;特別是生成式AI工具的普及&#xff0c;編程的世界正在發生翻天覆地的變化。編程教育也在這種環境下進行著深刻的轉型。那么&#xff0c;AI …

IP-Guard對SolidWorks PDM 加密授權說明

SolidWorks PDM 加密授權說明 一、簡介 該功能主要實現了,在SolidWorks Enterprise PDM環境下,可以正常"檢入"和"檢出" 加密文件,并可以正常預覽加密文件。 二、操作說明 2.1 設置加密授權 安裝客戶端后,登錄控制臺,選擇客戶端計算機或組右鍵選擇“…

AI 助力游戲開發中的常用算法實現

在當今的游戲開發領域&#xff0c;人工智能&#xff08;AI&#xff09;技術的應用已經成為推動行業發展的關鍵力量。AI不僅能夠提升游戲的智能化水平&#xff0c;還能夠增強玩家的沉浸感和游戲體驗。隨著技術的進步&#xff0c;AI在游戲設計、開發和測試中的應用越來越廣泛&…

重現ORA-01555 細說Oracle Undo 數據管理

1. 概述 1.1. Undo 數據應用 undo數據是&#xff1a; 原始的、修改之前的數據副本 是針對更改數據的每個事務處理所捕獲的 至少保留到事務處理結束 用于支持&#xff1a; 回退操作 讀取一致性查詢 閃回查詢、閃回事務處理和閃回表 從失敗的事務處理中進行恢復 1.2. 事…

Java 集合 Collection、List、Set

一. Collection 單列集合 1. Collection代表單列集合&#xff0c;每個元素(數據)只包含一個值 2. Collection集合特點 ① List系列集合&#xff1a;添加的元素是有序、可重復、有索引。 ArrayList、LinekdList&#xff1a;有序、可重復&#xff0c;有索引 ② Set系列集合&…

wamp php7.4 運行dm8

背景 1、電腦安裝了dm8&#xff0c;具體參照官網dm8安裝 2、安裝好了wamp&#xff0c;我當前的php版本切換成了7.4的&#xff0c;我wamp的安裝路徑d:\wamp64\ 操作 3、查看phpinfo&#xff0c;如果Thread Safet為enabled&#xff0c;則選擇pdo74_dm.dll&#xff0c;否則選擇…

pdf預覽兼容問題- chrome瀏覽器105及一下預覽不了

使用的"tato30/vue-pdf": "^1.11.2"預覽插件&#xff0c;發現chrome瀏覽器105及一下預覽不了 pdfPreview預覽組件&#xff1a; <template><div id"vue_pdf_view"><div class"tool_tip"><template v-if"pa…

linux 系統 mysql :8.4.3 主從復制 教程及運維命令

一、環境準備 硬件配置CPU2 核 CPU內存2 GB 內存硬盤30 GB 硬盤容量外網訪問服務器可以訪問外網軟件環境操作系統Anolis OS 7.9MySQL版本8.4.3 二、服務器清單 Master192.168.153.221Node192.168.153.222 三、安裝mysql &#xff08;兩臺機器都要下載&#xff09; # 下載 …

UE5材質節點Camera Vector/Reflection Vector

Camera Vector相機向量&#xff0c;輸出像素到相機的方向&#xff0c;結果歸一化 會隨著相機移動而改變 Reflection Vector 反射向量&#xff0c;物體表面法線反射到相機的方向&#xff0c;x和y和camera vector相反 配合hdr使用

復合機器人正以其高效、精準、靈活的特點,逐漸在汽車裝配線上嶄露頭角

隨著全球汽車制造業的快速發展&#xff0c;汽車裝配線已成為衡量企業生產效率和技術水平的重要標準。傳統的裝配方式往往依賴于大量的人工操作&#xff0c;這不僅效率低下&#xff0c;還面臨著質量不穩定、安全隱患等問題。然而&#xff0c;隨著智能科技的飛速進步&#xff0c;…

導致啟動nacos報錯Caused by: java.lang.IllegalStateException: No DataSource set 的兩種原因

Java資深小白&#xff0c;不足之處&#xff0c;或者有任何錯誤歡迎指出。 --藍紫報錯代碼如下: C:\Windows\System32>cd D:\nacos-server-2.2.3\nacos\binC:\Windows\System32>d:D:\nacos-server-2.2.3\nacos\bin>startup.cmd -m standalone "nacos is starting…

LinuxUbuntu打開VSCode白屏解決方案

解決方法是 以root權限打開VSCode sudo /usr/share/code/code --no-sandbox --unity-launch

C語言期末復習筆記(下)

目錄 九、指針 1.指針變量的定義和初始化 2.間接尋址符* 3.按值調用和按址調用 4.實例 5.函數指針 6.指針變量和其它類型變量的對比 十、字符串 1.字符串常量 2.字符串的存儲 3.字符指針 4.字符串的訪問和輸入/輸出 5.字符串處理函數 &#xff08;1&#xff09;str…

1、藍牙打印機環境搭建

本項目采用stm32f103c8T6芯片&#xff0c;通過庫函數實現打印功能&#xff0c;并配置有小程序藍牙通信上位機。 1、創建文件夾目錄 core文件夾存放核心庫文件 LIB文件夾存放標準庫函數文件 這里可以刪減&#xff0c;用不到的可以不要。 obj存放編譯后的文件 project存放項目…

IJCNN2025 投稿準備

投稿格式要求&#xff1a; IEEE - Manuscript Templates for Conference Proceedings 投稿網址&#xff1a; Conference Management Toolkit - Login

多輸入多輸出 | Matlab實現WOA-CNN鯨魚算法優化卷積神經網絡多輸入多輸出預測

多輸入多輸出 | Matlab實現WOA-CNN鯨魚算法優化卷積神經網絡多輸入多輸出預測 目錄 多輸入多輸出 | Matlab實現WOA-CNN鯨魚算法優化卷積神經網絡多輸入多輸出預測預測效果基本介紹模型背景程序設計參考資料 預測效果 基本介紹 Matlab實現WOA-CNN鯨魚算法優化卷積神經網絡多輸入…

Leecode刷題C語言之切蛋糕的最小總共開銷②

執行結果:通過 執行用時和內存消耗如下&#xff1a; typedef struct {int *booked;int bookedSize; } MyCalendar;#define MAX_BOOK_SIZE 1001MyCalendar* myCalendarCreate() {MyCalendar *obj (MyCalendar *)malloc(sizeof(MyCalendar));obj->booked (int *)malloc(siz…

力扣-數據結構-10【算法學習day.81】

前言 ###我做這類文章一個重要的目的還是給正在學習的大家提供方向&#xff08;例如想要掌握基礎用法&#xff0c;該刷哪些題&#xff1f;建議靈神的題單和代碼隨想錄&#xff09;和記錄自己的學習過程&#xff0c;我的解析也不會做的非常詳細&#xff0c;只會提供思路和一些關…

Vue 全局事件總線:Vue 2 vs Vue 3 實現

&#x1f31f; 前言 歡迎來到我的技術小宇宙&#xff01;&#x1f30c; 這里不僅是我記錄技術點滴的后花園&#xff0c;也是我分享學習心得和項目經驗的樂園。&#x1f4da; 無論你是技術小白還是資深大牛&#xff0c;這里總有一些內容能觸動你的好奇心。&#x1f50d; &#x…