Vue 消息订阅与发布
消息订阅与发布,也可以实现任意组件之间的通信。
订阅者:就相当于是我们,用于接收数据。
发布者:就相当于是媒体,用于传递数据。
安装消息订阅与发布插件:
在原生 JS 中 不太容易实现消息订阅与发布,所以我们这里借助第三方库实现 推荐使用 pubsub-js 库 它可以在任意一个框架中使用。
安装命令
npm i pubsub - js

安装完成后在需要使用的组件中引入即可
消息订阅与发布使用流程:
首先创建 Content.vue 组件用于显示内容。并引入 pubsub-js 插件 通过 pubsub.subscribe 方法订阅消息 接收数据.
<template><div><h2>{{ name }}</h2></div>
</template><script>
import pubsub from "pubsub-js"
export default {name: "Content",data() {return {name: "张三"}},mounted() {// 订阅消息 getNamepubsub.subscribe("getName", (msg, name) => {console.log(msg, name);this.name = name;})// this.$bus.$on("getName", (name) => {// this.name = name;// })}
}
</script>
然后创建 Edit.vue 组件用于编辑内容 并引入 pubsub-js 插件 通过 pubsub.publish 方法发布消息,传递数据。
<template><div><h2>编辑姓名</h2><input type="text" v-model="name"><button @click="editName">修改</button></div>
</template><script>
import pubsub from "pubsub-js"
export default {name: "Edit",data() {return {name: ''}},methods: {editName() {// 发布消息pubsub.publish("getName", this.name);// this.$bus.$emit("getName", this.name);}}
}
</script>
最后创建 Home.vue 页面,并引用 Content.vue 和 Edit.vue 组件。
<template><div><Content></Content><hr /><Edit></Edit></div>
</template><script>
import Content from "../components/Content"
import Edit from "../components/Edit"
export default {name: "Home",components: { Content, Edit }
}
</script>
注:在订阅消息中,会接收到两个参数,第一个是消息名称 第二个才是接收的数据 另外订阅消息的回调函数必须是箭头函数 否则 this 会变成 undefined.

注:订阅的消息想要销毁时,需要先创建一个变量接收这个消息,然后通过这个变量销毁,类似于清除定时器。
<template><div><h2>{{ name }}</h2></div>
</template><script>
import pubsub from "pubsub-js"
export default {name: "Content",data() {return {name: "张三"}},mounted() {// 订阅消息 getNamethis.pubId = pubsub.subscribe("getName", (msg, name) => {console.log(msg, name);this.name = name;})// this.$bus.$on("getName", (name) => {// this.name = name;// })},beforeDestroy() {// 取消订阅 getNamepubsub.unsubscribe(this.pubId);// this.$bus.off("getName");}
}
</script>
备注:在 Vue 中还是推荐使用全局事件总线实现组件之间的通信,消息订阅与发布在 Vue 中的使用并不多。
原创作者: 吴小糖
创作时间:2023.4.21
相关文章:
Vue 消息订阅与发布
消息订阅与发布,也可以实现任意组件之间的通信。 订阅者:就相当于是我们,用于接收数据。 发布者:就相当于是媒体,用于传递数据。 安装消息订阅与发布插件: 在原生 JS 中 不太容易实现消息订阅与发布&…...
如何在你的云服务器/云主机上更新并使用最新版本的python(python3.11)
更新并使用最新版本的python3.11 第一步,登录云服务器,并更新系统包 打开您的终端(Terminal)或使用任意SSH客户端,输入如下命令来登录云主机: ssh 用户名IP地址 在输入密码后,您将成功登录到云…...
python学习——【第八弹】
前言 上篇文章 python学习——【第七弹】学习了python中的可变序列集合,自此python中的序列的学习就完成啦,这篇文章开始学习python中的函数。 函数 在学习其他编程语言的时候我们就了解过函数:函数就是执行特定任何以完成特定功能的一段代…...
铁路应答器传输系统介绍
应答器传输系统 应答器传输系统是安全点式信息传输系统,通过应答器实现地面设备向车载设备传输信息。 应答器可根据应用需求向车载设备传输固定的(通过无源应答器)或可变的(通过有源应答器)上行链路数据。 当天线单…...
Baumer工业相机堡盟工业相机如何通过BGAPI SDK直接实现Mono16位深度的图像保存(C#)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK直接实现Mono16位深度的图像保存(C#) Baumer工业相机Baumer工业相机保存位深度12/16位图像的技术背景代码案例分享1:引用合适的类文件2:通过BGAPI SDK直接保存Mono12/16图像3…...
C语言入门篇——介绍篇
目录 1、什么是C语言 1、C语言的优点 3、语言标准 4、使用C语言的步骤 5、第一个C语言程序 6、关键字 1、什么是C语言 1972年,贝尔实验室的丹尼斯里奇和肯汤普逊在开发UNIX操作系统时设计了C语言,C语言是在B语言的基础上进行设计。C语言设计的初衷…...
Latex数学公式排版
文章目录 Latex使用最佳方式:读官方文档Latex中的字符数学公式排版1.引入宏包:2.公式排版基础3.数学符号(1).希腊字母(2).指数,上下标,导数(3).分式和根式(4).关系符(5).算符(6).巨算符(7).箭头 Latex使用 最佳方式:读官方文档 The not so short intro…...
【Linux】-关于Linux的指令(上)
作者:小树苗渴望变成参天大树 作者宣言:认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! TOC 前言 今天我们来讲关于Linux的基本指令,博主讲的指令会对应着Windows…...
【论文写作】引言写作的四个重要的语言点之时态!!!
在本篇文章当中,我们将着重介绍四个重要的写作语言要点之一的时态,其他语言点如下: 1. 时态 2. 标志性的衔接词 3. 主动、被动语态 4. 段落 1. 简单现在时和现在进行时 时态主要有现在时和现在进行时,看以下两个句子 I live in…...
Super Yolo论文翻译
论文:SuperYOLO: Super Resolution Assisted Object Detection in Multimodal Remote Sensing Imagery【IEEE】 论文地址: IEEE Xplore Full-Text PDF:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber10075555项目地址:icey…...
【CocosCreator入门】CocosCreator组件 | ProgressBar(进度条)组件
Cocos Creator 是一款流行的游戏开发引擎,具有丰富的组件和工具,其中的ProgressBar组件是一种用于实现进度条效果的重要组件。它可以让我们在游戏中展示各种进度条效果,例如加载进度条、血条等。 目录 一、组件介绍 二、组件属性 三、脚本…...
大数据数仓维度建模
目录 维度建模分为三种: 1、星型模型: 2、雪花模型: 3、星座模型: 模型的选择: 维度表和事实表: 维度表: 维度表特性 : 事实表: 事实表特性: 事务型…...
ESP32设备驱动-BH1745NUC 亮度和颜色传感器驱动
BH1745NUC 亮度和颜色传感器驱动 文章目录 BH1745NUC 亮度和颜色传感器驱动2、硬件准备3、软件准备4、驱动实现BH1745NUC 是具有 IC 总线接口的数字颜色传感器 IC。 该 IC 感应红光、绿光和蓝光 (RGB) 并将它们转换为数字值。 高灵敏度、宽动态范围和出色的 Ircut 特性使该 IC …...
通达信VCP形态选股公式,憋了好几天才写出来
VCP形态的英文”Volatility Contraction Pattern”的缩写,意思是“波动收缩形态”。VCP形态是全美交易冠军马克米勒维尼的核心交易模式之一,在其著作《股票魔法师》中有详细介绍。 马克米勒维尼把VCP形态比喻为湿毛巾,拧过一次后仍含水&…...
vue 知识储备
vue2 和 vue3 的区别 模块拆分:vue3采用 compnent API 更注重模块上的拆分,而vue2中则需要使用完整的vuejs,无法使用单独的模块重写API:vue2组件方法挂载到实例中未使用也会被打包,vue3通过 tree-shaking机制,实现按需引入,减少用户打包后体积数据双向绑定:vue2使用 Ob…...
MySQL表的增删查改
目录 一 插入 1 基本语法 ①全列插入 ②指定列插入 ③多条记录插入 ④冲突更新 二 查询 查询全部数据 指定列查询 显示 拼接 取别名 去重查找 where 逻辑运算符和比较运算符 结果排序 Limit group by 分组 聚合函数 对于count 对于sum 对于group by 相关的语…...
详解C语言string.h中常用的14个库函数(三)
本篇博客继续讲解C语言string.h头文件中的库函数。本篇博客计划讲解3个函数,分别是:strstr, strtok, strerror。其中strstr函数我会用一种最简单的方式模拟实现。 strstr char * strstr ( const char * str1, const char * str2 );strstr可以在str1中查…...
无人机视频与GIS融合三维实景怎么实现?
无人机视频与GIS融合三维实景怎么实现?无人机三维GIS作为一项新兴的测绘重要手段,具有续航时间长、成本低、机动灵活等优点,为城市的规划建设带来极大便利。 那么此项技术有什么样的特点呢?下面智汇云舟就带大家一起来了解一下。 三维是将采集以及经运…...
瞬间让你效率提高一倍的高效学习方法
方法不对,努力白费;方法对了,事半功倍!在学习的过程中我们会遇到各种困难与阻碍,如何发现并优化自己的学习方法就变得尤为重要。高效学习方法是指通过科学的、有效的方法来提高学习效率,实现更好的学习成果…...
442. 数组中重复的数据|||41. 缺失的第一个正数|||485. 最大连续 1 的个数
442. 数组中重复的数据 题目 给你一个长度为 n 的整数数组 nums ,其中 nums 的所有整数都在范围 [1, n] 内,且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数,并以数组形式返回。 你必须设计并实现一个时间复杂度为 O(n) 且仅…...
从火柴盒到AI:探索MENACE的数字化旅程
在计算机科学的历史中,有许多有趣的实验和发明,其中之一便是由唐纳德米奇(Donald Michie)设计的“火柴盒计算机”(Matchbox Educable Noughts and Crosses Engine,简称MENACE)。这个装置使用了火柴盒和彩色珠子来模拟人工智能,教机器玩井字游戏(Tic-Tac-Toe)。本文将…...
研究表明:员工不懂AI使用方法,企业难辞其咎
员工对AI工具使用方法缺乏了解,这与企业在试点项目、部署和许可证上投入多少资金无关,Forrester的最新研究显示了这一问题。Forrester使用人工智能商数(AIQ)来衡量员工对AI工具的理解程度,结果数据"令人震惊"…...
机器人运动规划:轨迹规划算法核心综述
前言在机器人和自动驾驶领域,“路径规划”(Path Planning)和“轨迹规划”(Trajectory Planning)是两个常被提及的概念。路径规划:解决“怎么走”的问题,关注空间几何路径,不含时间属…...
Fast Video Cutter Joiner(视频剪切合并软件)
链接:https://pan.quark.cn/s/fb790471c8c6Fast Video Cutter Joiner是一款强大的视频剪切合并工具,可以帮助用户对视频进行剪切或者合并处理,并支持编辑常见视频格式。这是一个快速的视频剪辑和加入软件,具有易于使用的界面。它允…...
汇编VS高级语言:从硬件操控到高效开发
汇编语言和Visual Studio(VS)的主要区别如下:核心区别对比维度汇编语言Visual Studio本质一种低级编程语言,直接操作硬件一种集成开发环境(IDE),支持多种高级语言使用场景嵌入式系统、驱动开发、…...
终极指南:如何精准选择Fluxion攻击时间窗口与提升成功率的完整策略
终极指南:如何精准选择Fluxion攻击时间窗口与提升成功率的完整策略 【免费下载链接】fluxion Fluxion is a remake of linset by vk496 with enhanced functionality. 项目地址: https://gitcode.com/gh_mirrors/fl/fluxion Fluxion是一款基于linset重构的无…...
BabelDOC:让PDF翻译变得超级简单的终极工具指南
BabelDOC:让PDF翻译变得超级简单的终极工具指南 【免费下载链接】BabelDOC Yet Another Document Translator 项目地址: https://gitcode.com/GitHub_Trending/ba/BabelDOC BabelDOC是一款强大的PDF文档翻译工具,专门为学术论文、技术文档等复杂P…...
OpenMS实战指南:如何用开源工具解决质谱数据分析三大难题
OpenMS实战指南:如何用开源工具解决质谱数据分析三大难题 【免费下载链接】OpenMS The codebase of the OpenMS project 项目地址: https://gitcode.com/gh_mirrors/op/OpenMS 你是否正在为复杂的质谱数据分析而烦恼?面对海量的LC-MS数据…...
2026年4月远程控制软件横评:谁才是你的“跨端神经中枢”?
转眼已至2026年,混合办公已成职场常态,AI也彻底渗透进每一寸数字土壤。曾经只负责“远程看看”的控制软件,如今已进化为融合AI辅助、超低延迟交互、全生态协同与企业级安全能力的数字生产力平台——它们不再只是工具,而是我们跨越…...
破解土地-生态耦合难题,从数据处理到SCI论文:AI辅助下PLUS-InVEST模型土地利用格局模拟与生态系统服务
做土地利用、生态系统服务、国土空间规划的同学,是不是经常遇到这些问题:PLUS 模型装不上、跑不通、参数看不懂InVEST 产水 / 土壤保持 / 碳储量 / 生境质量数据总是报错ArcGIS 栅格处理、投影转换、重分类一头雾水多情景模拟不会设计,结果不…...
