組件之間的數據通信方式

Vue 的傳值方式(即組件之間的數據通信方式)根據組件關系不同(父子、兄弟、跨層級)有所區別。下面是常見的傳值方式,按使用場景來分類:


一、父子組件傳值

1. props(父 -> 子)

父組件通過 props 向子組件傳遞數據。

<!-- 父組件 -->
<Child :msg="parentMsg" /><!-- 子組件 -->
props: ['msg']

2. $emit(子 -> 父)

子組件通過 $emit 觸發自定義事件,向父組件傳遞數據。

<!-- 子組件 -->
this.$emit('updateData', newValue)<!-- 父組件 -->
<Child @updateData="handleUpdate" />

二、兄弟組件傳值

兄弟組件沒有直接的父子關系,需通過事件總線狀態管理來中轉:

3. 事件總線(Vue 2 常用)

創建一個空的 Vue 實例作為事件總線。

// event-bus.js
import Vue from 'vue'
export const EventBus = new Vue()// 組件A
EventBus.$emit('sendData', data)// 組件B
EventBus.$on('sendData', (data) => { /* 接收數據 */ })

Vue 3 中不推薦使用事件總線,可以考慮 mitt 或其他方式。

4. 狀態管理(Vuex 或 Pinia)

使用狀態管理工具集中管理數據,適合大中型項目。

// 示例:Pinia
const store = useMainStore()
store.data = 'xxx'

三、跨層級傳值

5. provide / inject

祖先組件使用 provide,后代組件用 inject 接收。適合深層嵌套組件傳值。

// 祖先組件
provide('theme', 'dark')// 后代組件
inject('theme') // 得到 'dark'

四、非組件通信

6. URL 參數 / 路由參數

通過 vue-router 的 query 或 params 傳遞數據。

// query 傳值
this.$router.push({ path: '/page', query: { id: 123 } })// 接收
this.$route.query.id// params 傳值(需配置動態路由)
this.$router.push({ name: 'page', params: { id: 123 } })

五、Ref 引用方式(Vue 3 特性)

7. ref + expose(父調用子)

子組件通過 defineExpose 暴露方法或數據,供父組件訪問。

// 子組件
defineExpose({ childMethod })// 父組件
const childRef = ref()
childRef.value.childMethod()

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

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

相關文章

組件是怎樣寫的(1):虛擬列表-VirtualList

本篇文章是《組件是怎樣寫的》系列文章的第一篇&#xff0c;該系列文章主要說一下各組件實現的具體邏輯&#xff0c;組件種類取自 element-plus 和 antd 組件庫。 每個組件都會有 vue 和 react 兩種實現方式&#xff0c;可以點擊 https://hhk-png.github.io/components-show/ …

個性化的配置AndroidStudio

Android Studio 提供諸多向導和模板&#xff0c;可用于驗證 Java 開發套件 (JDK) 和可用 RAM 等系統要求&#xff0c;以及配置默認設置&#xff0c;例如經過優化的默認 Android 虛擬設備 (AVD) 模擬和更新的系統映像。本文檔介紹了可用于自定義 Android Studio 使用方式的其他配…

人類行為的原動力是自我保存-來自ChatGPT

自我保存&#xff08;Self-Preservation&#xff09;確實可以說是人類行為最原始、最底層的驅動力。 簡單來說&#xff1a; 無論我們做什么&#xff0c;表面看動機五花八門&#xff0c;實際上歸根到底都繞不開活下去、保護自己。 &#x1f4a1; 從不同層面理解這個觀點&#…

SystemVerilog語法之內建數據類型

簡介&#xff1a;SystemVerilog引進了一些新的數據類型&#xff0c;具有以下的優點&#xff1a;&#xff08;1&#xff09;雙狀態數據類型&#xff0c;更好的性能&#xff0c;更低的內存消耗&#xff1b;&#xff08;2&#xff09;隊列、動態和關聯數組&#xff0c;減少內存消耗…

藍光三維掃描技術:高效精密測量相機鏡頭底座注塑件

如今越來越多的攝影愛好者、vlog拍攝者使用數碼相機以及無人機&#xff0c;隨時隨地記錄生活中的每一刻美好瞬間&#xff0c;對相機設備的要求也不斷提高。 — 案例背景 — 相機鏡頭底座涉及鏡頭裝置可靠、螺絲位置度連接以及殼體組裝&#xff0c;鏡頭底座注塑件生產廠商&…

【前端】【面試】【業務場景】前端如何獲取并生成設備唯一標識

? 總結 問題&#xff1a;前端如何獲取并生成設備唯一標識&#xff1f; 核心要點&#xff1a;瀏覽器原生信息有限&#xff0c;但通過組合多個維度可生成設備指紋&#xff08;Device Fingerprint&#xff09;&#xff0c;用于唯一標識設備。 常見方式&#xff1a; 瀏覽器信息&…

極刻AI搜v1.0 問一次問題 AI工具一起答

軟件名&#xff1a;極刻AI搜 版本&#xff1a;v1.0 功能&#xff1a;囊括了互聯網上比較好用的一些支持”搜索“的網站或者工具 開發平臺&#xff1a;nodepythonweb 分類有&#xff1a; AI搜索&#xff08;支持智能問答的AI搜索引擎&#xff09; 常規搜索&#xff1a;&#xff…

《2025最新Java面試題全解析:從基礎到高并發架構設計》

25年Java開發者面試中最常考察的100道面試題&#xff0c;涵蓋Java基礎、JVM、多線程、Spring框架、分布式系統等核心知識點&#xff0c;并結合大廠真實面試案例進行深度解析&#xff0c;助你順利通過技術面試。 一、Java基礎篇&#xff08;高頻15問&#xff09; 1. HashMap底層…

[c語言日寄]免費文檔生成器——Doxygen在c語言程序中的使用

【作者主頁】siy2333 【專欄介紹】?c語言日寄?&#xff1a;這是一個專注于C語言刷題的專欄&#xff0c;精選題目&#xff0c;搭配詳細題解、拓展算法。從基礎語法到復雜算法&#xff0c;題目涉及的知識點全面覆蓋&#xff0c;助力你系統提升。無論你是初學者&#xff0c;還是…

51c嵌入式~單片機~合集5~DMA

我自己的原文哦~ https://blog.51cto.com/whaosoft/12940885 一、DMA DMA&#xff0c;全稱Direct Memory Access&#xff0c;即直接存儲器訪問。 DMA傳輸將數據從一個地址空間復制到另一個地址空間&#xff0c;提供在外設和存儲器之間或者存儲器和存儲器之間的高速數據傳輸…

Linux隨記(十七)

一、綜合報錯&#xff1a;fork: Cannot allocatte memory 和 modues is unknwon 和 pam_limits(crond:session) : unknwon limit item ‘noproc’ 1.1 fork: Cannot allocatte memory 處理 - 隨記 排查時間2025年4月。 環境描述&#xff1a; 2014年左右的服務器&#xff0c;…

支持mingw g++14.2 的c++23 功能print的vscode tasks.json生成調試

在mingw14.2版本中, print庫的功能默認沒有開啟, 生成可執行文件的tasks.json里要顯式加-lstdcexp, 注意放置順序. tasks.json (支持mingw g14.2 c23的print ) {"version": "2.0.0","tasks": [{"type": "cppbuild","…

賦能能源 | 智慧數據,構建更高效智能的儲能管理系統

行業背景 隨著新能源產業的快速發展&#xff0c;大規模儲能系統在電力調峰、調頻及可再生能源消納等領域的重要性日益凸顯。 儲能電站作為核心基礎設施&#xff0c;其能量管理系統&#xff08;EMS&#xff09;需要處理海量實時數據&#xff0c;包括電池狀態、功率變化、環境監…

使用 Flutter 遇坑小計

前言 首先, 谷哥很貼心地為國內用戶準備了一份使用手冊 不過很遺憾 就算你照著它的手冊來了, 還是會在后續使用中遇到其它的坑 今天我踩了, 保不齊明天就是其他人(lol) running gradle task ‘assembledebug’ stuck 首先去確定下當下Android Studio(或者說你目前的Flutter項…

鏈表與文件

鏈表 單鏈表 1.鏈表的初始化 typedef struct node {char name[100];int number;struct node *next; }Node,*LinkList;}Node;2.鏈表的初始化函數(Initlist) LinkList InitList() {LinkList head;head(Node*)malloc(sizeof(Node));head->nextNULL;return head; }3.建立鏈…

uniapp打ios包

uniapp在windows電腦下申請證書并打包上架 前言 該開發筆記記錄了在window系統下&#xff0c;在蘋果開發者網站生成不同證書&#xff0c;進行uniapp打包調試和上線發布&#xff0c;對window用戶友好 注&#xff1a;蘋果打包涉及到兩種證書&#xff1a;開發證書 和 分發證書 …

OpenCV 圖形API(48)顏色空間轉換-----將 LUV 顏色空間的圖像數據轉換為 BGR 顏色空間函數LUV2BGR()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 將圖像從LUV顏色空間轉換為BGR顏色空間。 該函數將輸入圖像從LUV顏色空間轉換為BGR。B、G和R通道值的常規范圍是0到255。 輸出圖像必須是8位無符…

HOW MUCH POSITION INFORMATION DO CONVOLUTIONAL NEURAL NETWORKS ENCODE?

1. 動機: 卷積神經網絡中的卷積操作實際上是一個局部的操作,這樣的話就會使得它雖然知道自己看的是什么,但是卻不清楚他在圖像中的位置信息,但是位置信息實際上是很有用的,因此CNN可能潛在的學習到了如何去編碼這種位置信息。所以這篇論文就是為了研究這種位置信息是如何在…

56、如何快速讓?個盒??平垂直居中

在網頁開發中&#xff0c;有多種方式能讓一個盒子實現水平垂直居中。下面為你介紹幾種常見且快速的方法。 1. 使用 Flexbox 布局 Flexbox 是一種非常便捷的布局模型&#xff0c;能夠輕松實現元素的水平和垂直居中。 html <!DOCTYPE html> <html lang"en"&…

RAG應用過程監控系統選型:LangFuse

Langfuse 是一個開源的大語言模型&#xff08;LLM&#xff09;工程平臺&#xff0c;旨在協助團隊構建、調試和改進由人工智能驅動的應用程序。憑借其全面的工具套件&#xff0c;Langfuse 使開發者能夠深入洞察其 LLM 應用程序&#xff0c;并優化性能。 Stars 數10,522Forks 數9…