当前位置:首页 > VUE

vue发布订阅的实现

2026-02-23 09:48:08VUE

实现发布订阅模式

在Vue中可以通过EventBusVue.prototype全局事件总线来实现发布订阅模式。这种方式适合非父子组件间的通信。

创建事件总线:

// event-bus.js
import Vue from 'vue'
export const EventBus = new Vue()

订阅事件

组件中订阅自定义事件:

import { EventBus } from './event-bus.js'

export default {
  created() {
    EventBus.$on('custom-event', (payload) => {
      console.log('收到事件:', payload)
    })
  }
}

发布事件

触发自定义事件并传递数据:

import { EventBus } from './event-bus.js'

export default {
  methods: {
    triggerEvent() {
      EventBus.$emit('custom-event', { data: '测试数据' })
    }
  }
}

取消订阅

组件销毁时建议移除事件监听:

import { EventBus } from './event-bus.js'

export default {
  beforeDestroy() {
    EventBus.$off('custom-event')
  }
}

替代方案

对于Vue 2.x还可以使用:

// main.js
Vue.prototype.$eventBus = new Vue()

// 组件中使用
this.$eventBus.$emit('event')
this.$eventBus.$on('event', handler)

对于Vue 3.x推荐使用mitt等第三方库:

vue发布订阅的实现

import mitt from 'mitt'
const emitter = mitt()

// 发布
emitter.emit('event', data)

// 订阅
emitter.on('event', (data) => {
  console.log(data)
})

标签: vue
分享给朋友:

相关文章

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(如…

vue的实现

vue的实现

Vue 的实现原理 Vue 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是 Vue 实现的主要技术细节。 响应式系统 Vue 的响…

vue实现list

vue实现list

Vue 实现列表渲染 在 Vue 中,可以使用 v-for 指令来渲染列表。v-for 指令基于一个数组或对象来渲染一个列表,可以遍历数组或对象的属性。 基本列表渲染 <template>…

vue实现ssr

vue实现ssr

Vue 实现 SSR(服务端渲染) Vue 的服务端渲染(SSR)允许在服务器端生成完整的 HTML 内容,再发送到客户端,提升首屏加载速度和 SEO 友好性。以下是实现 Vue SSR 的关键步骤和…

vue实现发帖

vue实现发帖

使用 Vue 实现发帖功能 前端实现 创建发帖表单组件,包含标题和内容输入框,以及提交按钮。使用 v-model 绑定表单数据。 <template> <div>…

vue实现字幕

vue实现字幕

Vue 实现字幕功能 在 Vue 中实现字幕功能可以通过动态绑定数据和 CSS 动画来实现。以下是具体实现方法: 1. 基础字幕组件 创建一个字幕组件,通过 v-model 或 props 接收字…