vue订阅消息和发布消息

简介: 订阅消息和发布消息

上一个文章我们说到两个组件之间可以利用全局中间组件来实现,其实还有一个更简单的方法可以实现两个组件之间的通信,那就是订阅消息和发布消息。

    顾名思义也知道,需要数据的那个组件来订阅消息就可以了,然后等着那个有数据的组件来发布消息就可以了。理解起来也是很容易的。先画个图演示一波:


这个图也很清晰的描述了这样一个过程,当然,代码也是很好实现的,也都是键名之意:

    首先得需要一个第三方库,叫pubsub-js

npm i pubsub-js

安装完成之后我们就可以直接使用了

需要订阅消息的先订阅消息:

import pusub from 'pubsub-js';
export default {
mounted(){//挂载完成

//先订阅一个消息
this.pubid = pusub.subscribe("haha",(xiaoximing,data)=>{
  console.log('消息回调',data);
})

},
beforeDestroy(){

pusub.unsubscribe(this.pubid)

}
}
然后等着发送数据的组件来发布:

import pusub from 'pubsub-js';
export default {
methods:{

sub(){
  pusub.publish("haha",1);
}

}
}
然后来总结一下:

    订阅消息是 pusub.subscribe("订阅消息名称","(回调函数,第一个参数是消息名称,戴第二个参数是传回的数据)=>")

    发布消息是pubsub.publish("订阅消息名称",“要发布的信息数据”); 
目录
相关文章
|
9天前
|
JavaScript 前端开发 开发者
vue3+ts配置跨域报错问题解决:> newpro2@0.1.0 serve > vue-cli-service serve ERROR Invalid options in vue.
【6月更文挑战第3天】在 Vue CLI 项目中遇到 "ERROR Invalid options in vue.config.js: ‘server’ is not allowed" 错误是因为尝试在 `vue.config.js` 中使用不被支持的 `server` 选项。正确配置开发服务器(如代理)应使用 `devServer` 对象,例如设置代理到 `http://xxx.com/`: ```javascript module.exports = { devServer: {
24 1
|
1天前
|
JavaScript 算法
“Error: error:0308010C:digital envelope routines::unsupported”启动vue项目遇到一个错误【已解决
“Error: error:0308010C:digital envelope routines::unsupported”启动vue项目遇到一个错误【已解决
8 1
|
1天前
|
JavaScript
error Component name “Login“ should always be multi-word vue/multi-word-component-names【已解决】
error Component name “Login“ should always be multi-word vue/multi-word-component-names【已解决】
6 1
|
2天前
|
JavaScript
vue知识点
vue知识点
10 3
|
3天前
|
JavaScript 前端开发 Java
【vue实战项目】通用管理系统:作业列表
【vue实战项目】通用管理系统:作业列表
16 0
|
3天前
|
JavaScript API
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
16 2
|
3天前
|
JavaScript API
【vue实战项目】通用管理系统:信息列表,信息录入
【vue实战项目】通用管理系统:信息列表,信息录入
10 3
|
3天前
|
JavaScript 前端开发 API
【vue实战项目】通用管理系统:学生列表
【vue实战项目】通用管理系统:学生列表
13 2
|
3天前
|
缓存 JavaScript
【vue实战项目】通用管理系统:首页
【vue实战项目】通用管理系统:首页
10 2
|
3天前
|
JavaScript 前端开发 数据安全/隐私保护
【vue实战项目】通用管理系统:登录页
【vue实战项目】通用管理系统:登录页
11 2