組件的注冊和引用

在Vue中,開發者可以將頁面中獨立的、可重用的部分封裝成組件,對組件的結構,樣式和行為進行設置。組件是 Vue 的基本結構單元,組件之間可以相互引用。


一.注冊組件

當在Vue項目中定義了一個新的組件后,要想在其他組件中引用這個新的組件,需要對新的組件進行注冊。在注冊組件的時候,需要給組件取一個名字,從而區分每個組件,可以采用帕斯卡命名法(PascalCase)為組件命名。

Vue 提供了兩種注冊組件的方式,分別是全局注冊和局部注冊。接下來對這兩種注冊組件的方式分別進行講解。


1.全局注冊

???????????在實際開發中,如果某個組件的使用頻率很高,許多組件中都會引用該組件,則推薦將該組件全局注冊。被全局注冊的組件可以在當前Vue項目的任何一個組件內引用。

????????????在 Vue 項目的 src\main.js 文件中,通過 Vue 應用實例的 component()方法可以全局注冊組件,該方法的語法格式如下。

component('組件名稱',需要被注冊的組件)

????????上述語法格式中,component()方法接收兩個參數,第1個參數為組件名稱,注冊完成后即可全局使用該組件名稱,第2個參數為需要被注冊的組件。

????????例如,在 src\main.js 文件中注冊一個全局組件 MyComponent,示例代碼如下。

import {createApp )from 'vue';
import'./style.css'
import App from'./app.vue' const app =createApp(App)import MyComponent from './components/MyComponent.vue'app.component('MyComponent',MyComponent)app.mount('#app')

????????在上述代碼中,第4行代碼用于導入 MyComponent 組件;第5行代碼用于創建Vue應用用實例;第6行代碼用于將MyComponent組件注冊為全局組件。

????????component()方法支持鏈式調用,可以連續注冊多個組件,示例代碼如下。

app.component('ComponentA', ComponentA)
.component ('ComponentB', ComponentB)
.component('ComponentC',ComponentC)

2.局部注冊

????????在實際開發中,如果某些組件只在特定的情況下被用到,推薦進行局部注冊。局部注冊即在某個組件中注冊、被局部注冊的組件只能在當前注冊范圍內使用。例如,在組件A中注冊了組件B,則組件B只能在組件A中使用,不能在組件C中使用。

????????局部注冊組件的示例代碼如下。

<soript>
import ComponentA from './ComponentA.vue'
export default{
components:{ ComponentA:ComponentA}
}</script>

????????在上述代碼中,第4行代碼用于將 ComponentA 組件局部注冊到當前組件中。其中,冒號前面的ComponenA 是局部注冊的組件名稱,冒號后面的ComponentA 是組件本身。由于冒號前后代碼相同,所以可以將(ComponentA:ComponentA }簡寫為{ComponentA}。

????????在使用 setup語法糖時,導人的組件會被自動注冊,無須手動注冊,導入后可以直接在模板中使用,示例代碼如下。

<script setup>import ComponentA from'./ComponentA.vue'</script>

????????上述代碼完成了 ComponentA 組件的導入和注冊。


二.引用組件

????????將組件注冊完成后,若要將組件在頁面中渲染出來,需要引用組件。默認情況下,Vue項目中有一個根組件,根組件可以引用其他組件,引用后會形成父子關系--根組件是父組件,被引用的組件是子組件。在子組件中也可以引用其他組件。

????????在組件的<template>標簽中可以引用其他組件,被引用的組件需要寫成標簽的形式,標簽名應與組件名對應。組件的標簽名可以使用短橫線分隔或帕斯卡命名法命名。例如,<my-component>標簽和<MyComponent>標簽都表示引用 MyComponent 組件。一個組件可以被引用多次,但不可出現自我引用和互相引用的情況,否則會出現死循環。

????????接下來通過實際操作的方式演示組件的使用方法,具體步驟如下。

① 創建 src\components\ComponentUse.vue 文件,具體代碼如下。

<template>
<h5>父組件</h5>
<div class="box">
</div></template><style>.box{display: flex;}
</style>

????????在上述代碼中,第3~4行代碼定義了 div 元素,該 div元素將作為被引用組件的容器:第7~9行代碼用于將 div 元素設置為彈性盒子。

② 修改 sre\main.js文件,切換頁面中顯示的組件,具體代碼如下。

 <template>
<div class="global-container">
<h5>全局組件</h5>
</template>
</div><style>
.global-container{
border: lpx solid black;
height: 50px;
flex: 1;
}
</style>

????????在上述代碼中,第1~5行代碼通過<template>標簽定義 GlobalComponent 組件的模板:第6~12 行代碼通過<style>標簽定義 GlobalComponent 組件的樣式。

④ 創建 src\components\LocalComponent.vue 文件,表示局部組件,具體代碼如下。

<template>
<div class="local-container">
<h5>局部組件</h5>
</div></template><style>
.local-container {
border: 1px dashed black;height: 50px;flex:1;}
</style>

????????在上述代碼中,第1~5 行代碼通過<template>標簽定義 LocalComponent 組件的模板第6~12 行代碼通過<style>標簽定義 LocalComponent 組件的樣式。

⑤ 修改 src\main.js 文件,導人 GlobalComponent組件并調用 component( )方法全局注冊ClobalComponent組件,具體代碼如下。

import { createApp }from 'vue'
import './style.css'
import App from'./components/ComponentUse.vue'
import GlobalComponent from'./components/GlobalComponent .vue'
const app =createApp(App)
app.component('GlobalComponent', GlobalComponent)
app.mount('#app')

????????在上述代碼中,第4行代碼通過 impont 語法導入 GlobalComponent 組件;第6行代碼過調用 component()方法全局注冊 GlobalComponent 組件。

⑥ 修改 srekcomponents\ComponentUse.vue 文件,添加代碼導人 LocalComponent 組件具體代碼如下。

 <script setup>
import LocalComponent from'./LocalComponent .vue'</script>

????????⑦ 修改 srckcomponents\CcomponenUse.vue 文件,在class為 box的<div>標簽中引用GlobalComponent 組件和 LocalComponent 組件,具體代碼如下。

<div class="box">
<GlobalComponent />
<LocalComponent/>
</div>

????????在上述代碼中,第2行和第3行代碼分別在ComponentUse 組件中以標簽的形式引用了GlobalComponent 組件和 LocalComponent 組件。

????????保存上述代碼后,在瀏覽器中訪問 http://127.0.0.1:51731,引|用組件后的頁面效果如圖所示。

?????????從圖可以看出,在ComponentUse 組件中成功引用了 GlobalComponent 組件和LocalComponent組件,頁面中顯示了GlobalComponent組件和 LocalComponent 組件的內容。


感謝大家的閱讀,如有不對的地方,可以私信我,感謝大家!

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

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

相關文章

Vue3_對接騰訊云COS_大文件分片上傳和下載

目錄 一、騰訊云后臺配置 二、安裝SDK 1.script 引入方式 2.webpack 引入方式 三、文件上傳 1.new COS 實例 2.上傳文件 四、文件下載 騰訊云官方文檔&#xff1a; 騰訊云官方文檔https://cloud.tencent.com/document/product/436/11459 一、騰訊云后臺配置 1.登錄 對…

[職場] 為什么不能加薪? #學習方法#知識分享#微信

為什么不能加薪&#xff1f; 不能加薪的根本原因&#xff0c;終于被我找到了&#xff01; 朋友們&#xff01;職場這個地方是個很神奇的世界&#xff0c;有些規則并不是你想象的那樣。我們都希望能在這個世界里施展自己的才華&#xff0c;獲得升職加薪的榮耀。然而&#xff0c…

seerfar丨OZON運營工具,OZON選品插件

隨著全球電商市場的蓬勃發展&#xff0c;OZON作為俄羅斯及東歐地區的重要電商平臺&#xff0c;吸引了眾多中國商家的目光。然而&#xff0c;如何在OZON平臺上脫穎而出&#xff0c;實現高效的商品運營&#xff0c;成為了眾多商家亟待解決的問題。在這樣的背景下&#xff0c;seer…

tailwindcss的@apply使用

tailwindcss的apply是把在html寫的tailwindcss可以挪到style里面 簡化頁面的可讀性 沒寫之前的 <section class"block-risk absolute flex flex-col items-center p-4 text-center left-0 text-white;" :style"{ top, left: 60px }"> </section…

淺析軟件開發技術的發展歷程與展望

隨著信息技術的飛速發展&#xff0c;軟件開發技術也在不斷演進。本文旨在深入探討軟件開發技術的發展歷程&#xff0c;并分析其未來的發展趨勢和展望。 軟件開發技術的發展歷程 在回顧軟件開發技術的發展歷程時&#xff0c;我們不禁驚嘆于這一領域的飛速進步。從早期的手工編寫…

被拖欠6000萬,代工大廠倒閉了····

6月7日消息&#xff0c;據綜合媒體報道&#xff0c;電子煙代工大廠佳斯特電子&#xff08;東莞&#xff09;發布公告&#xff0c;將自6月3日起停止一切經營活動&#xff0c;開始自行清算工作。根據佳斯特電子科技&#xff08;東莞&#xff09;有限公司的通告&#xff0c;由于公…

pyqt6 任務欄不顯示設置的icon

添加這段代碼即可解決 import ctypes myappid mycompany.myproduct.subproduct.version ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)

TypeScript環境安裝與VScode編輯器的使用

說明大背景環境&#xff0c;我用的是window10系統。 1.安裝node.js 。 去官網下載安裝包。 雖然我去的是官網&#xff0c;但是不知為何下載了個不知名的東西&#xff0c;后來又找了個鏈接才下載正確了。 實際上就是一個.msi的文件。我用的版本&#xff1a;node-v18.19.0-x6…

最大矩形問題

柱狀圖中最大的矩形 題目 分析 矩形的面積等于寬乘以高&#xff0c;因此只要能確定每個矩形的寬和高&#xff0c;就能計算它的面積。如果直方圖中一個矩形從下標為 i 的柱子開始&#xff0c;到下標為 j 的柱子結束&#xff0c;那么這兩根柱子之間的矩形&#xff08;含兩端的柱…

能把試卷上的字消除的軟件有哪些?推薦三款好用的

能把試卷上的字消除的軟件有哪些&#xff1f;在數字化時代&#xff0c;我們越來越依賴科技手段來解決生活中的各種問題。其中&#xff0c;試卷上的字消除問題&#xff0c;就是一個備受關注的痛點。幸運的是&#xff0c;現在市面上已經出現了多款能夠輕松消除試卷上字跡的軟件&a…

力扣hot100:295. 數據流的中位數(兩個優先隊列維護中位數)

LeetCode&#xff1a;295. 數據流的中位數 這個題目最快的解法應該是維護中位數&#xff0c;每插入一個數都能快速得到一個中位數。 根據數據范圍&#xff0c;我們應當實現一個 O ( n l o g n ) O(nlogn) O(nlogn)的算法。 1、超時—插入排序 使用數組存儲&#xff0c;維持數…

【WEB自動化面試02--學習過程的問題及解決】

day01 1、報錯獲取不到瀏覽器二進制文件&#xff1a;需要指定瀏覽器路徑及驅動路徑。 第一次使用谷歌瀏覽器驅動&#xff0c;找不到二進制文件報錯&#xff1a; selenium.common.exceptions.WebDriverException: Message: unknown error: cannot find Chrome binary Stacktra…

短視頻矩陣源碼----如何做正規開發規則分享:

一、什么是SaaS化服務技術開發&#xff1f; &#xff08;短視頻矩陣系統是源頭開發的應該分為3個端口---- 總后臺控制端、總代理端口&#xff0c;總商戶后臺&#xff09; SaaS是軟件即服務&#xff08;Software as a Service&#xff09;的縮寫。它是一種通過互聯網提供軟件應…

Vue2(0基礎入門)

環境準備 安裝腳手架 vuecli: npm install -g vue/clivite: npm init vuelatest-g 全局安裝&#xff0c;任意目錄都可以使用vue腳本 進入目錄創建項目&#xff1a; 在目錄的終端輸入&#xff1a;vue ui安裝devtool(這個網頁是安裝好了自動跳轉的) 運行項目&#xff1a; …

代碼隨想錄第27天|貪心算法part1

455.分發餅干 先給孩子和餅干排序&#xff0c;每次選取一個最大的餅干給一個最大胃口的孩子&#xff0c;直到餅干分完或者遍歷完孩子 class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(…

Vue3【三】 使用TS自己編寫APP組件

Vue3【三】 使用TS自己編寫APP組件 運行截圖 目錄結構 注意目錄層級 文件源碼 APP.vue <template><div class"app"><h1>你好世界!</h1></div> </template><script lang"ts"> export default {name:App //組…

JavaScript的核心語法

JavaScript JavaScript&#xff1a;JavaScript的組成&#xff1a;核心語法&#xff1a;Hello&#xff1a;變量&#xff1a;JS的基本數據類型&#xff1a;特殊點&#xff1a; 數組&#xff1a;流程控制語句&#xff1a;函數&#xff1a;函數的重載&#xff1a;函數的遞歸:預定義…

在 VSCode 中搭建 Flutter 開發環境并運行項目

要在 Visual Studio Code (VSCode) 中運行 Flutter 項目并啟動虛擬機&#xff08;例如 Android Emulator&#xff09;&#xff0c;可以按照以下步驟進行設置和操作&#xff1a; 一、安裝 Flutter 和 Dart 插件 安裝 Flutter SDK&#xff1a; 前往 Flutter 官網 下載并安裝 Flu…

離散數學答疑 3

&#xff5e;A&#xff1a;A的補集 有時候空集是元素&#xff0c;有時候就是純粹的空集 A-B的定義&#xff1a; 笛卡爾積&#xff1a; 求等價關系&#xff1a;先求劃分再一一列舉 不同劃分&#xff1a;分幾塊。一塊&#xff1a;兩塊&#xff1a;三塊&#xff1a;分別計算 Ix是…

自然語言處理(NLP)—— 主題建模

1. 主題建模的概念 主題建模&#xff08;Topic Modeling&#xff09;是一種用于發現文檔集合&#xff08;語料庫&#xff09;中的主題&#xff08;或稱為主題、議題、概念&#xff09;的統計模型。在自然語言處理和文本挖掘領域&#xff0c;主題建模是理解和提取大量文本數據隱…