一、全局事件总线
1.第一步,安装全局事件总线(main.js中)
new Vue({
......
beforeCreate() {
Vue.prototype.$bus = this //安装全局事件总线,$bus就是当前应用的vm
},
......
})
2.第二步,使用全局事件总线
A组件想接收数据,则在A组件中给$bus绑定自定义事件,事件的回调留在A组件自身。
A组件:
<script>
<!--提供数据-->
this.$bus.$emit('xxxx',数据)
</script>
B组件:
<!--接收数据-->
mounted() {
this.$bus.$on('xxxx',this.demo)
},
<!--解绑事件-->
beforeDestroy() {
this.$bus.$off('hello')
}
实例:
二、消息订阅与发布(在React中框架中用的较多,vue用的较少)
1.第一步,安装pubsub:npm i pubsub-js
2.第二步,引入(子组件): import pubsub from 'pubsub-js'
3.第三步,接收数据:A组件想接收数据,则在A组件中订阅消息,订阅的回调留在A组件自身。
4.代码实现:
A组件:
import pubsub from 'pubsub-js'
mounted() {
this.pid = pubsub.subscribe('xxx',this.demo) //订阅消息
}
B组件:
import pubsub from 'pubsub-js'
<!--提供数据-->
pubsub.publish('xxx',数据),
<!--取消订阅-->
beforeDestroy() {
pubsub.unsubscribe(this.pubId)
},
实例: