美文网首页
12-消息订阅与发布

12-消息订阅与发布

作者: 荆承鹏 | 来源:发表于2022-07-19 23:49 被阅读0次

1. 定义

消息订阅与发布是一种组件间通信的方法。适用于任意组件。
pubsub 是由两个单词组成:publish 和 subscribe 发布和订阅。
设计思路:订阅者可以理解为接收数据的组件,发布者理解为提供数据的组件。在订阅者组件里预定一个消息名,然后是一个回调函数;当发布者组件里调用相同的消息名的时候,订阅者的回调函数被执行。这个过程中实现通信。
目前第三方由很多库是可以实现这个功能的,比如 pubsub

2. 使用步骤

  1. 安装第三方库:npm i pubsub-js
  2. 引入:import pubsub from "pubsub-js"
  3. 接收数据的组件:A组件想要接收数据,则在A组件中订阅消息,订阅的回调留在 A 中
methods(){
  demo(data){....}
}
...
mounted(){
  this.pid = pubsub.subscribe('xxx',this.demo) //订阅消息
}
  1. 提供数据:pubsub.publish('xxx', 数据)
  2. 最好在 beforeDestroy·钩子中,用pubsub.unsubscribe(pid)去取消订阅。

3 案例

说明:兄弟组件 Student, School 和 父级组件 App,现在我们要把Student组件里的 name 数据给到 Student 和 App

//App.vue
<script>
//import 引入所有组件
import Student from './components/Student.vue'
import School from './components/School.vue'
import PubSub from 'pubsub-js'
export default {
    name: "App", // 给app组建命名为 App
    //注册注册组件 components: { School,Student },
    components: {School,Student},
    data(){
      return {
        msg:"你好啊",
      }

    },
    mounted(){
     this.pid = PubSub.subscribe("studentName2", (name,data)=>{
        console.log('我是app组件,我收到了发布者的信息', name,data)
        this.msg = this.msg + data
      })
    },
    beforeDestroy(){
      PubSub.unscribe(this.pid)
    }

}
</script>
//School.vue
<script>
import PubSub from 'pubsub-js'
export default {
    name:"School",
    data(){
        return {
            msg2: "尚硅谷",
            address:"长安区"
        }
    },
    mounted(){
        this.pid = PubSub.subscribe('studentName1', (name,data)=>{
            console.log('我是订阅组件,从发布组件接收到了信息', name,data)
        })
    },
    beforeDestroy(){
        PubSub.unsubscribe(this.pid)
    }

}
</script>
//Student.vue
<script>
import PubSub from 'pubsub-js'
export default {
    name: "Student",
    data(){
        return {
            name: "Jackie",
            age:18
        }
    },
    methods: {
        //把数据给School组件
        sendStudentName(){
            PubSub.publish('studentName1',this.name)
        },
        //把数据给App组件
        sendNameToApp(){
            PubSub.publish('studentName2',this.name)
        }
    }
}
</script>

相关文章

  • 12-消息订阅与发布

    1. 定义 消息订阅与发布是一种组件间通信的方法。适用于任意组件。pubsub 是由两个单词组成:publish ...

  • 消息订阅与发布

    消息订阅与发布(pubsub) 1、一种组件间通信的方式,适用于任意组件间通信 2、使用步骤: ...

  • 消息订阅与发布

    1.一种组件间通信方式,适用于任意组件间通信2.使用步骤(1)安装 pubsub: npm i pubsub-js...

  • 分布式流平台—— Kafka

    发布与订阅消息系统 数据(消息)的发送者(发布者)不会直接把消息发送给接收 者,这是发布与订阅消息系统的一个特点。...

  • 《Kafka权威指南》——初识 Kafka

    发布与订阅消息系统 在正式讨论Apache Kafka (以下简称Kafka)之前,先来了解发布与订阅消息系统的概...

  • Kafka入门到精通——入门篇

    发布与订阅消息系统 在正式讨论Apache Kafka (以下简称Kafka)之前,先来了解发布与订阅消息系统的概...

  • Redis学习之发布与订阅

    发布与订阅 一、介绍 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(...

  • 消息的发布与订阅

  • Vue消息发布与订阅

    在Vue的原型上定义一个变量bus,在所有的组件里都可以这个变量,使用this.bus.$emit()发布消息,t...

  • Redis消息订阅与发布

    Redis 发布订阅(pub/sub)是一种消息通信模式,可以用于消息的传输,Redis的发布订阅机制包括三个部分...

网友评论

      本文标题:12-消息订阅与发布

      本文链接:https://www.haomeiwen.com/subject/laxeirtx.html