vue event-bus使用方法及注意事项

event-bus使用方法

1.定义event-bus组件实例

import Vue from 'vue'
export const EventBus = new Vue()

2.定义两个组件A、组件B,分别设置EventBus.emit以及EventBus.on、 EventBus.$off
组件A

<template>
  <div class="boats">
    我是驾驶舱
    <el-button @click="release">发布消息</el-button>
  </div>
</template>

<script>
import { EventBus } from '@/plugins/event-bus'
export default {
  methods: {
    release() {
      // 这个是对在页面上的已展示组件的发布影响
      EventBus.$emit('platform1', 'wangwu')
    }
  },
  destroyed() {
    // 这个是对组件B(暂时未展示组件)起作用的发布影响
    EventBus.$emit('platform1', 'wangwu1')
  }
}
</script>

<style scoped></style>

组件B

<template>
  <div class="data-analyse">我是数据分析{{ name }}</div>
</template>

<script>
import { EventBus } from '@/plugins/event-bus'
export default {
  data() {
    return {
      name: ''
    }
  },
  created() {
    const _this = this
    EventBus.$on('platform1', function (res) {
      _this.name = res
    })
  },
  destroyed() {
    EventBus.$off('platform1')
  }
}
</script>

<style scoped></style>

event-bus使用注意事项

event-bus的核心是发布订阅模式,要求订阅者要能获取到发布的信息,必须在发布前已经注册,否则无法获取到发布的信息
event-bus在vue中的使用分两种情况,具体为:

1.组件A、组件B同时展示页面,这时可以通过写在methods中的事件发布信息,订阅组件B通过写在created中订阅收到信息。
2.需先关闭组件A再打开组件B,组件B获得信息,这时需要注意的是vue组件销毁与生成的生命周期,即先创建组件B,在mouted前destroy组件A, 这是可以通过写在destroy中发布信息,订阅组件B通过写在created中收到信息。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容