组件之间的数据通信方式

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.mzph.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…