Vue3 中常见的组件传值方式:

  1. Props:这是 Vue 中最常见的组件传值方式,即在父组件中定义 prop 并将数据传递给子组件。
  2. Event Bus:可以通过事件总线在两个组件之间进行通信,即定义一个中央事件处理器,父组件和子组件通过它进行通信。
  3. Provide/Inject:可以在父组件中提供数据,并在子组件中注入这些数据,从而实现组件传值。
  4. Slots:可以在父组件中嵌入子组件,并在子组件中使用插槽传递数据。
  5. Vuex:Vuex 是 Vue 官方推荐的状态管理工具,也可以用于组件之间的数据通信。

以上是 Vue3 中常见的组件传值方式,你可以根据实际需求选择合适的方式进行组件传值。 ---

事件总线的示例(其他传值方式网上文章很多):

(在vue2中我们可以直接new Vue创建一个空组件作为事件处理中心并使用其$emit和$on订阅和发布事件,Vue3官方推荐使用vue3-eventbus插件,可我觉得就这个事,没必要多安装一个插件吧) 首先,需要创建一个事件总线的类(这是一个单例类,我们可以在任何需要的地方通过new获得唯一实例):

// EventBus.js
export default class EventBus{
static instance; constructor(){
if(EventBus.instance instanceof EventBus){
return EventBus.instance;
} this.events = {}; EventBus.instance = this;
return EventBus.instance;
} emit(eventName, data) {
if (this.events[eventName]) {
this.events[eventName].forEach(function(fn) {
fn(data);
});
}
}
on(eventName, fn) {
this.events[eventName] = this.events[eventName] || [];
this.events[eventName].push(fn);
} off(eventName, fn) {
if (this.events[eventName]) {
for (var i = 0; i < this.events[eventName].length; i++) {
if (this.events[eventName][i] === fn) {
this.events[eventName].splice(i, 1);
break;
}
};
}
}
}

然后,在组件中订阅和发布事件:

// ComponentA.vue
import EventBus from '@/util/EventBus'; // 发布事件
export default {
methods: {
handleClick() {
new EventBus().emit('event-name', payload);
},
},
}; // # 最后,你可以在另一个组件中监听事件:
// ComponentB.vue
import EventBus from '@/util/EventBus'; export default {
mounted() {
new EventBus().on('event-name', (payload) => {
// do something with the payload
});
},
};

这样,就可以在不同的组件之间通过事件总线进行自由通信了。

Vue3 中的5种常见的组件传值方式,Vue3事件总线(无需插件)的更多相关文章

  1. 简单谈谈Python中的几种常见的数据类型

    简单谈谈Python中的几种常见的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等 ...

  2. 2.Hive的几种常见的数据导入方式

    好久没写Hive的那些事了,今天开始写点吧.今天的话题是总结Hive的几种常见的数据导入方式,我总结为四种:(1).从本地文件系统中导入数据到Hive表:(2).从HDFS上导入数据到Hive表:(3 ...

  3. Hive中的三种不同的数据导出方式介绍

    问题导读:1.导出本地文件系统和hdfs文件系统区别是什么?2.带有local命令是指导出本地还是hdfs文件系统?3.hive中,使用的insert与传统数据库insert的区别是什么?4.导出数据 ...

  4. vue3中的四种插槽的介绍-保证让你看看的明明白白!

    插槽 当组件中只有一个插槽的时候,我们可以不设置 slot 的 name 属性. v-slot 后可以不带参数,但是 v-slot 在没有设置 name 属性的时候, 插槽口会默认为"def ...

  5. wpf企业级开发中的几种常见业务场景

    前阵子在公司弄个内部的进销存管理系统,从了解需求.系统设计到编码,大约耗费了两个月时间,后来公司有了其他的安排,这东西就算黄了.顺便吐槽一下,厂里的一些人说话真心不顾别人感受,邮件啥的没一句舒服的.不 ...

  6. 014-HQL中级4-Hive中的三种不同的数据导出方式介绍

    根据导出的地方不一样,将这些方式分为三种:(1).导出到本地文件系统:(2).导出到HDFS中:(3).导出到Hive的另一个表中.为了避免单纯的文字,我将一步一步地用命令进行说明. 一.导出到本地文 ...

  7. vue中组件传值方式汇总

    在应用复杂时,推荐使用vue官网推荐的vuex,以下讨论简单SPA中的组件间传值. 一.路由传值 路由对象如下图所示: 在跳转页面的时候,在js代码中的操作如下,在标签中使用<router-li ...

  8. ios常见的页面传值方式

    iOS页面间的传值细分有很多种,基本的传值方式有三种:委托Delegate传值.通知NSNotification传值.Block传值,其他在项目中可能会遇到的还有:UserDefault或文件方式传值 ...

  9. 组件通信之全局事件总线 & 消息订阅发布

    全局事件总线 介绍 一种组件间通信的方式,适用于任意组件间通信. 在使用全局事件总线之前需要一些知识准备 所有组件实例的原型对象的原型对象就是 Vue 的原型对象,即VueComponent.prot ...

  10. Js之Dom学习-三种获取页面元素的方式、事件、innerText和innerHTML的异同

    一.三种获取页面元素的方式: getElementById:通过id来获取 <body> <input type="text" value="请输入一个 ...

随机推荐

  1. DP(优化)

    史不分好坏.是史就应该冲进. 细节见其他题解. P10538 首先建出部分分 sub1 的图,发现是 DAG,于是设点为状态,即即将乘坐 \(j\) 车的最小代价 \(f_j\).这样的转移就是枚举上 ...

  2. PC端自动化测试实战教程-1-pywinauto 环境搭建(详细教程)

    1.简介 之前总有人在群里或者私信留言问:Windows系统安装的软件如何自动化测试呢?因为没有接触过或者遇到过,所以说实话宏哥当时也不清楚怎么实现,怎么测试.然而在一次偶然的机会接触到了Python ...

  3. 什么是Kappa架构?

    一.简介 相当于在Lambda架构上去掉了批处理层(Batch Layer),只留下单独的流处理层(Speed Layer).通过消息队列的数据保留功能,来实现上游重放(回溯)能力. 当流任务发生代码 ...

  4. mac安装php单点调试环境

    页面预览和抓包方式 sudo php-fpm sudo killall php-fpm 开启/usr/local/etc/nginx/ nginx nginx -s quit 运行Charles就行 ...

  5. ORACLE11g数据中创建DB Link方法,用于跨oracle数据库查询数据

    ---查看该用户下已建立的DB link链接 SELECT * FROM DBA_DB_LINKS --创建语句 CREATE DATABASE LINK  连接名CONNECT TO 登录名  ID ...

  6. 燕千云ITSM已支持DeepSeek对接!AI能力持续升级

    春节期间,DeepSeek火爆全网,引发热议,作为国产AI大模型的黑马,DeepSeek凭借独特的训练方法.先进的模型架构和强大的联网推理能力,正不断拓展AI技术的应用边界.其"快思考&qu ...

  7. JavaScript 浏览本地文件夹

    1. JavaScript 浏览本地文件夹 button.onclick = async function () {// 给按钮绑定事件 try { const handler = await sho ...

  8. Markdown 语法深度详解与实战演示

    一.引言 在当今数字化的时代,高效地处理和呈现文本信息变得至关重要.Markdown 作为一种轻量级标记语言,因其简洁.易读.易写的特点,受到了广大开发者.写作者和内容创作者的喜爱.无论您是撰写博客. ...

  9. Wifi - 查看连接过的Wifi的密码

    使用管理员身份打开命令提示符 Microsoft Windows [版本 10.0.22621.1702] (c) Microsoft Corporation.保留所有权利. C:\Windows\S ...

  10. Codeforces Round 1007 (Div. 2) 比赛记录

    Codeforces Round 1007 (Div. 2) 比赛记录 比赛链接 很喜欢的一场比赛,题目质量很高,不是手速场,做出题超级有成就感,赛时切掉了 A - D1,上大分了. B卡得有点久,其 ...