Vue3 中的5种常见的组件传值方式,Vue3事件总线(无需插件)
Vue3 中常见的组件传值方式:
- Props:这是 Vue 中最常见的组件传值方式,即在父组件中定义 prop 并将数据传递给子组件。
- Event Bus:可以通过事件总线在两个组件之间进行通信,即定义一个中央事件处理器,父组件和子组件通过它进行通信。
- Provide/Inject:可以在父组件中提供数据,并在子组件中注入这些数据,从而实现组件传值。
- Slots:可以在父组件中嵌入子组件,并在子组件中使用插槽传递数据。
- 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事件总线(无需插件)的更多相关文章
- 简单谈谈Python中的几种常见的数据类型
简单谈谈Python中的几种常见的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等 ...
- 2.Hive的几种常见的数据导入方式
好久没写Hive的那些事了,今天开始写点吧.今天的话题是总结Hive的几种常见的数据导入方式,我总结为四种:(1).从本地文件系统中导入数据到Hive表:(2).从HDFS上导入数据到Hive表:(3 ...
- Hive中的三种不同的数据导出方式介绍
问题导读:1.导出本地文件系统和hdfs文件系统区别是什么?2.带有local命令是指导出本地还是hdfs文件系统?3.hive中,使用的insert与传统数据库insert的区别是什么?4.导出数据 ...
- vue3中的四种插槽的介绍-保证让你看看的明明白白!
插槽 当组件中只有一个插槽的时候,我们可以不设置 slot 的 name 属性. v-slot 后可以不带参数,但是 v-slot 在没有设置 name 属性的时候, 插槽口会默认为"def ...
- wpf企业级开发中的几种常见业务场景
前阵子在公司弄个内部的进销存管理系统,从了解需求.系统设计到编码,大约耗费了两个月时间,后来公司有了其他的安排,这东西就算黄了.顺便吐槽一下,厂里的一些人说话真心不顾别人感受,邮件啥的没一句舒服的.不 ...
- 014-HQL中级4-Hive中的三种不同的数据导出方式介绍
根据导出的地方不一样,将这些方式分为三种:(1).导出到本地文件系统:(2).导出到HDFS中:(3).导出到Hive的另一个表中.为了避免单纯的文字,我将一步一步地用命令进行说明. 一.导出到本地文 ...
- vue中组件传值方式汇总
在应用复杂时,推荐使用vue官网推荐的vuex,以下讨论简单SPA中的组件间传值. 一.路由传值 路由对象如下图所示: 在跳转页面的时候,在js代码中的操作如下,在标签中使用<router-li ...
- ios常见的页面传值方式
iOS页面间的传值细分有很多种,基本的传值方式有三种:委托Delegate传值.通知NSNotification传值.Block传值,其他在项目中可能会遇到的还有:UserDefault或文件方式传值 ...
- 组件通信之全局事件总线 & 消息订阅发布
全局事件总线 介绍 一种组件间通信的方式,适用于任意组件间通信. 在使用全局事件总线之前需要一些知识准备 所有组件实例的原型对象的原型对象就是 Vue 的原型对象,即VueComponent.prot ...
- Js之Dom学习-三种获取页面元素的方式、事件、innerText和innerHTML的异同
一.三种获取页面元素的方式: getElementById:通过id来获取 <body> <input type="text" value="请输入一个 ...
随机推荐
- C#从数据库中加载照片的
从数据库中读取人员照片信息并加载到图片控件的代码 string conn = "Server=192.168.xx.xx;Database=dbName;User ID=sa;passwor ...
- 引燃算力新基建,天翼云亮相DCIC2024第13届数据中心产业发展大会!
近日,由中国通信企业协会主办的"第13届数据中心产业发展大会暨AIDC智能算力生态合作展览会"在北京顺利举行.现场展示了天翼云"AIDC""紫金&qu ...
- Codeforces 1536B Prinzessin der Verurteilung 题解 [ 紫 ] [ 后缀自动机 ] [ 动态规划 ] [ 拓扑排序 ]
Prinzessin der Verurteilung:最短未出现字符串的板子. 思路 考虑在 SAM 上 dp,定义 \(dp_i\) 表示从 \(i\) 节点走到 NULL 节点所花费的最少步数. ...
- kvm远程管理
列出centos7中所有的虚拟机 [root@kvm1 ~]# virsh list --all Id Name State ------------------------------------- ...
- vue element UI el-table表格添加行点击事件
<el-table @row-click="openDetails"></el-table> //对应的 methods 中//点击行事件methods: ...
- Javascript 方法有多个参数有默认值,但是只想为其中某个参数赋值
例子: function log(a, b = 2, c = 3, d = 4) { console.log(a, b, c, d) } log(1); // output: 1 2 3 4 log( ...
- 互联网和DeepSeak时代,获取信息这么容易,为什么我们还是学习不好?
因为人性倾向于立即获得享受,而不是延迟获得享受,然而,学习就是延迟获得享受,所以,学习,其实是反人性的一种活动. 学习,特别是对知识的深入学习,其实需要付出大量的时间和精力,这个过程中必然伴随着各种各 ...
- 奥特曼框架autMan对接微信公众号的详细教程
1.简介 微信公众号分为订阅号(个人)和服务号(公司),个人是可以申请的哈.具体怎么申请参见官方文档:https://kf.qq.com/faq/120911VrYVrA151009eIrYvy.ht ...
- CentOS 8 上安装和配置 nginx
1.检查yum上的nginx版本 yum info nginx 2.安装nginx yum install nginx 安装过程有时会询问是否安装,输入y回车即可 3.将服务设置为每次开机启动 sud ...
- 洛谷P10112 [GESP202312 八级] 奖品分配 题解
题目传送门. 看了题解才发现我有多蠢. 我的做法真是唐完了. 在此之前请学习扩展欧几里得定理和扩展欧几里得定理求逆元. 发现奖品要么 \(N\) 个,要么 \(N+1\) 个,于是分类讨论,当奖品只有 ...