当前位置: 首页 > news >正文

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 消息订阅与发布

消息订阅与发布&#xff0c;也可以实现任意组件之间的通信。 订阅者&#xff1a;就相当于是我们&#xff0c;用于接收数据。 发布者&#xff1a;就相当于是媒体&#xff0c;用于传递数据。 安装消息订阅与发布插件&#xff1a; 在原生 JS 中 不太容易实现消息订阅与发布&…...

如何在你的云服务器/云主机上更新并使用最新版本的python(python3.11)

更新并使用最新版本的python3.11 第一步&#xff0c;登录云服务器&#xff0c;并更新系统包 打开您的终端&#xff08;Terminal&#xff09;或使用任意SSH客户端&#xff0c;输入如下命令来登录云主机&#xff1a; ssh 用户名IP地址 在输入密码后&#xff0c;您将成功登录到云…...

python学习——【第八弹】

前言 上篇文章 python学习——【第七弹】学习了python中的可变序列集合&#xff0c;自此python中的序列的学习就完成啦&#xff0c;这篇文章开始学习python中的函数。 函数 在学习其他编程语言的时候我们就了解过函数&#xff1a;函数就是执行特定任何以完成特定功能的一段代…...

铁路应答器传输系统介绍

应答器传输系统 应答器传输系统是安全点式信息传输系统&#xff0c;通过应答器实现地面设备向车载设备传输信息。 应答器可根据应用需求向车载设备传输固定的&#xff08;通过无源应答器&#xff09;或可变的&#xff08;通过有源应答器&#xff09;上行链路数据。 当天线单…...

Baumer工业相机堡盟工业相机如何通过BGAPI SDK直接实现Mono16位深度的图像保存(C#)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK直接实现Mono16位深度的图像保存&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机保存位深度12/16位图像的技术背景代码案例分享1&#xff1a;引用合适的类文件2&#xff1a;通过BGAPI SDK直接保存Mono12/16图像3&#xf…...

C语言入门篇——介绍篇

目录 1、什么是C语言 1、C语言的优点 3、语言标准 4、使用C语言的步骤 5、第一个C语言程序 6、关键字 1、什么是C语言 1972年&#xff0c;贝尔实验室的丹尼斯里奇和肯汤普逊在开发UNIX操作系统时设计了C语言&#xff0c;C语言是在B语言的基础上进行设计。C语言设计的初衷…...

Latex数学公式排版

文章目录 Latex使用最佳方式&#xff1a;读官方文档Latex中的字符数学公式排版1.引入宏包:2.公式排版基础3.数学符号(1).希腊字母(2).指数,上下标,导数(3).分式和根式(4).关系符(5).算符(6).巨算符(7).箭头 Latex使用 最佳方式&#xff1a;读官方文档 The not so short intro…...

【Linux】-关于Linux的指令(上)

作者&#xff1a;小树苗渴望变成参天大树 作者宣言&#xff1a;认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点 点 关 注 吧&#xff01; TOC 前言 今天我们来讲关于Linux的基本指令&#xff0c;博主讲的指令会对应着Windows…...

【论文写作】引言写作的四个重要的语言点之时态!!!

在本篇文章当中&#xff0c;我们将着重介绍四个重要的写作语言要点之一的时态&#xff0c;其他语言点如下&#xff1a; 1. 时态 2. 标志性的衔接词 3. 主动、被动语态 4. 段落 1. 简单现在时和现在进行时 时态主要有现在时和现在进行时&#xff0c;看以下两个句子 I live in…...

Super Yolo论文翻译

论文&#xff1a;SuperYOLO: Super Resolution Assisted Object Detection in Multimodal Remote Sensing Imagery【IEEE】 论文地址&#xff1a; IEEE Xplore Full-Text PDF:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp&arnumber10075555项目地址&#xff1a;icey…...

【CocosCreator入门】CocosCreator组件 | ProgressBar(进度条)组件

Cocos Creator 是一款流行的游戏开发引擎&#xff0c;具有丰富的组件和工具&#xff0c;其中的ProgressBar组件是一种用于实现进度条效果的重要组件。它可以让我们在游戏中展示各种进度条效果&#xff0c;例如加载进度条、血条等。 目录 一、组件介绍 二、组件属性 三、脚本…...

大数据数仓维度建模

目录 维度建模分为三种&#xff1a; 1、星型模型&#xff1a; 2、雪花模型&#xff1a; 3、星座模型&#xff1a; 模型的选择&#xff1a; 维度表和事实表&#xff1a; 维度表&#xff1a; 维度表特性 &#xff1a; 事实表&#xff1a; 事实表特性&#xff1a; 事务型…...

ESP32设备驱动-BH1745NUC 亮度和颜色传感器驱动

BH1745NUC 亮度和颜色传感器驱动 文章目录 BH1745NUC 亮度和颜色传感器驱动2、硬件准备3、软件准备4、驱动实现BH1745NUC 是具有 IC 总线接口的数字颜色传感器 IC。 该 IC 感应红光、绿光和蓝光 (RGB) 并将它们转换为数字值。 高灵敏度、宽动态范围和出色的 Ircut 特性使该 IC …...

通达信VCP形态选股公式,憋了好几天才写出来

VCP形态的英文”Volatility Contraction Pattern”的缩写&#xff0c;意思是“波动收缩形态”。VCP形态是全美交易冠军马克米勒维尼的核心交易模式之一&#xff0c;在其著作《股票魔法师》中有详细介绍。 马克米勒维尼把VCP形态比喻为湿毛巾&#xff0c;拧过一次后仍含水&…...

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个函数&#xff0c;分别是&#xff1a;strstr, strtok, strerror。其中strstr函数我会用一种最简单的方式模拟实现。 strstr char * strstr ( const char * str1, const char * str2 );strstr可以在str1中查…...

无人机视频与GIS融合三维实景怎么实现?

无人机视频与GIS融合三维实景怎么实现?无人机三维GIS作为一项新兴的测绘重要手段&#xff0c;具有续航时间长、成本低、机动灵活等优点&#xff0c;为城市的规划建设带来极大便利。 那么此项技术有什么样的特点呢?下面智汇云舟就带大家一起来了解一下。 三维是将采集以及经运…...

瞬间让你效率提高一倍的高效学习方法

方法不对&#xff0c;努力白费&#xff1b;方法对了&#xff0c;事半功倍&#xff01;在学习的过程中我们会遇到各种困难与阻碍&#xff0c;如何发现并优化自己的学习方法就变得尤为重要。高效学习方法是指通过科学的、有效的方法来提高学习效率&#xff0c;实现更好的学习成果…...

442. 数组中重复的数据|||41. 缺失的第一个正数|||485. 最大连续 1 的个数

442. 数组中重复的数据 题目 给你一个长度为 n 的整数数组 nums &#xff0c;其中 nums 的所有整数都在范围 [1, n] 内&#xff0c;且每个整数出现 一次 或 两次 。请你找出所有出现 两次 的整数&#xff0c;并以数组形式返回。 你必须设计并实现一个时间复杂度为 O(n) 且仅…...

数据治理:数据质量与元数据管理

数据治理&#xff1a;数据质量与元数据管理 大家好&#xff0c;我是欧阳瑞&#xff08;Rich Own&#xff09;。今天想和大家聊聊数据治理这个重要话题。作为一个全栈开发者&#xff0c;数据治理是确保数据资产价值的关键。今天就来分享一下数据质量和元数据管理的实战经验。 数…...

DeepSeek开源模型部署成本骤降67%的秘密(含CUDA内核级优化日志):仅剩最后48小时可复现

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeek开源模型部署成本骤降67%的全局洞察 DeepSeek系列开源大模型&#xff08;如DeepSeek-V2、DeepSeek-Coder&#xff09;自发布以来&#xff0c;凭借其优异的推理效率与结构化稀疏设计&#xff0c;在企业…...

Nginx缓慢HTTP攻击防护:从Slowloris原理到四层生产加固

1. 这不是误报&#xff1a;缓慢HTTP拒绝服务攻击的真实杀伤力与Nginx暴露面 “检测到目标主机可能存在缓慢的http拒绝服务攻击”——当安全扫描工具弹出这行提示时&#xff0c;很多运维同学的第一反应是点掉、忽略、加白名单。我见过三次真实事故&#xff1a;一次是电商大促前…...

AssetStudio深度解析:Unity资源二进制结构与离线反编译原理

1. 这不是“又一个Unity资源查看器”&#xff0c;而是一把能拆开Unity游戏包的手术刀AssetStudio这个名字&#xff0c;第一次见的人常误以为是Unity官方出的配套工具——毕竟带个“Studio”后缀&#xff0c;界面又长得挺像Unity编辑器。但其实它和Unity Technologies毫无关系&a…...

Steam Deck多系统引导终极指南:3步完成图形化配置

Steam Deck多系统引导终极指南&#xff1a;3步完成图形化配置 【免费下载链接】SteamDeck_rEFInd Simple rEFInd install script for the Steam Deck (with GUI customization) 项目地址: https://gitcode.com/gh_mirrors/st/SteamDeck_rEFInd SteamDeck_rEFInd是一款专…...

SAP-ABAP:变量、常量、结构与内表声明(10篇博客合集) 第三篇:STRUCT结构声明全指南:嵌套结构与深层结构的差异与选型

变量、常量、结构与内表声明&#xff08;10篇博客合集&#xff09; 第三篇&#xff1a;STRUCT结构声明全指南&#xff1a;嵌套结构与深层结构的差异与选型在ABAP开发中&#xff0c;结构体&#xff08;Structure&#xff09;是将多个字段组合成一个逻辑单元的核心手段。从简单的…...

DCIM管理系统是什么?它的应用价值与关键功能有哪些?

DCIM管理系统的定义与功能概述 是现代数据中心重要的工具&#xff0c;目的是融合IT管理与设备监控&#xff0c;进而实现高效的容量规划与设备维护。这个系统的核心组件包括实时监控、资产管理及环境监控功能&#xff0c;利用综合运用这些工具&#xff0c;操作人员能够快速识别…...

Agent Skills 万千应用 · 第04篇 Excel 分析 Skill:让 Agent 会整理表格、建公式、画图表

Agent Skills 万千应用 第04篇 Excel 分析 Skill&#xff1a;让 Agent 会整理表格、建公式、画图表01&#xff5c;场景痛点开场&#x1f4ca; 周一早上&#xff0c;老板丢过来一份 Excel&#xff1a;销售流水 8000 行、客户名称有重复、日期格式不统一、金额里还混着“元”和空…...

Asimov支持的开发依赖类型详解:从Node.js到Python、Go、Rust全覆盖

Asimov支持的开发依赖类型详解&#xff1a;从Node.js到Python、Go、Rust全覆盖 【免费下载链接】asimov Automatically exclude development dependencies from Apple Time Machine backups 项目地址: https://gitcode.com/gh_mirrors/as/asimov Asimov是一款能够自动将…...

Airflow Maintenance Dags日志清理完全教程:两种方案应对不同部署环境

Airflow Maintenance Dags日志清理完全教程&#xff1a;两种方案应对不同部署环境 【免费下载链接】airflow-maintenance-dags A series of DAGs/Workflows to help maintain the operation of Airflow 项目地址: https://gitcode.com/gh_mirrors/ai/airflow-maintenance-dag…...