全局事件总线

一种可以在任意组件间通信的方式,本质上就是一个对象,它必须满足以下条件

  • 所有的组件对象都必须能看见他
  • 这个对象必须能够使用$on$emit$off方法去绑定、触发和解绑事件

xVkue1.png
xVk0Ff.png
xVkDfS.png

消息的订阅与发布(基本不用)

消息订阅与发布(pubsub)消息订阅与发布是一种组件间通信的方式,适用于任意组件间通信
使用步骤
安装pubsub:npm i pubsub-js
引入:import pubsub from 'pubsub-js'
接收数据:A组件想接收数据,则在A组件中订阅消息,订阅的回调留在A组件自身

School.vue
通过.subscribe()函数来接收订阅消息。有两个参数,第一个为接收的订阅名称,第二个为一个函数。
函数里面也有两个参数,第一个参数可以收到订阅的name,第二个是订阅的数据消息。
给.subscribe()赋给一个变量,这里通过this放在本地的vc当中。
然后通过这个变量名称放在unsubscribe()函数里面可以消除订阅。
pubsub.unsubscribe(this.pubID)

import pubsub from "pubsub-js";//消息订阅与发布他是个对象,对象里面有很多有用的方法。
        methods:{
            dataName(name,value){
                this.StudentName=value
            }
        },
        mounted() {
            this.pubID=pubsub.subscribe("name",this.dataName)
        },
        beforeDestroy() {
            pubsub.unsubscribe(this.pubID)
        },

Students.vue
通过.publish()函数来发送给订阅者的消息

import pubsub from "pubsub-js";
methods: {
            sendStudentName(){
                pubsub.publish('name',this.name);
            }
        },
    }