Vue的消息订阅与发布

Vue的消息订阅与发布

备注:全局事件总线用的更多些,消息订阅与发布只需了解即可。

  1. 需要引入库:pubsub-js
  2. 图解过程
    消息订阅与发布过程
  • 前提:A组件想获取C组件中的内容
  • 方法:A是订阅者,B是发布者。
  • 过程:
    A订阅一个名叫demo的消息,设置一个test函数
    B发布名叫demo,并附上A想获取的参数666
    一旦C中发布了demo,会执行test函数来获取参数666
  1. 安装pubsub-js
npm i  pubsub-js
  1. 引入所安装的库
    在消息的订阅者那引入
import pubsub from 'pubsub-js'

Student & School 的Vue项目解析

  1. 前提:
  • School想获取Student中的学生名
  • School是消息的订阅者,Student是消息的发布者
    2.代码解析
    School中:
# 引入库
import pubsub from 'pubsub-js'
……
# 在School组件挂载时订阅名叫hello的消息,一旦hello消息发布了,就执行里面的函数
mounted(){
  pubsub.subscribe('hello',function (){
    console.log('有人发布了hello消息,hello消息的回调执行了')
  })

Student中:

<template>
  <div>
    <h2>学生姓名:{{name}}</h2>
    # 点击按钮触发sendStudentName函数
    <button @click="sendStudentName">把学生名给School</button>
  </div>
</template>
# 引入库
import pubsub from 'pubsub-js'
……
# 在sendStudentName中发布hello消息,并传送666
methods:{
  sendStudentName(){
    pubsub.publish('hello',666)
  }
},

进阶版:

  • 让Student中的数据被School获取
  • 只需修改School中的内容
    School中:
  mounted(){
    this.pubId = pubsub.subscribe('hello',(msgName,data)=>{
      console.log('有人发布了hello消息,hello消息的回调执行了',msgName,data)
    })
  },

其中,msgName是Vue默认自带的,值为消息名hello。第二个才是School需要的参数。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值