当前位置:首页 > VUE

简单实现vue事件机制

2026-01-20 19:59:53VUE

Vue 事件机制实现

Vue 的事件机制主要依赖于 $on$emit$off 方法,用于组件间的通信。以下是简化版的事件总线实现:

1. 创建事件总线

class EventBus {
  constructor() {
    this.events = {};
  }

  $on(eventName, callback) {
    if (!this.events[eventName]) {
      this.events[eventName] = [];
    }
    this.events[eventName].push(callback);
  }

  $emit(eventName, ...args) {
    const callbacks = this.events[eventName];
    if (callbacks) {
      callbacks.forEach(cb => cb(...args));
    }
  }

  $off(eventName, callback) {
    if (!eventName) {
      this.events = {};
      return;
    }
    if (!callback) {
      delete this.events[eventName];
      return;
    }
    const callbacks = this.events[eventName];
    if (callbacks) {
      this.events[eventName] = callbacks.filter(cb => cb !== callback);
    }
  }
}

const bus = new EventBus();

2. 使用示例

// 监听事件
bus.$on('message', (text) => {
  console.log('Received:', text);
});

// 触发事件
bus.$emit('message', 'Hello World');

// 移除事件
const handler = (text) => console.log('Handler:', text);
bus.$on('message', handler);
bus.$off('message', handler);

3. 组件间通信

// 组件A
bus.$emit('update-data', { id: 1 });

// 组件B
bus.$on('update-data', (payload) => {
  console.log('Data updated:', payload);
});

4. 注意事项

简单实现vue事件机制

  • 事件名建议使用常量避免拼写错误
  • 及时移除无用的事件监听防止内存泄漏
  • 复杂场景建议使用 Vuex 替代事件总线

这个简化实现包含了 Vue 事件系统的核心功能,可以直接在项目中使用或作为学习参考。实际 Vue 源码中的实现会更复杂,包含更多边界情况处理。

标签: 机制事件
分享给朋友:

相关文章

vue事件实现

vue事件实现

Vue 事件实现方法 模板中直接绑定事件 在 Vue 模板中通过 v-on 或 @ 语法直接绑定事件。例如点击事件: <button @click="handleClick">点击触发事…

vue 实现hover事件

vue 实现hover事件

在Vue中实现hover事件可以通过多种方式完成,以下是常见的几种方法: 使用@mouseenter和@mouseleave指令 Vue提供了原生的事件监听指令,可以直接在模板中绑定鼠标进入和离开的…

uniapp事件介绍

uniapp事件介绍

uniapp事件介绍 uniapp中的事件系统基于Vue.js的事件机制,允许开发者在组件间进行通信或响应用户交互。以下是uniapp中常见的事件类型和使用方法。 事件绑定与触发 在uniapp中,…

vue 路由实现机制

vue 路由实现机制

Vue 路由实现机制 Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。其核心实现机制主要包括以下几个方面: 路由模式 Vue Router 支持两种路由模式:…

vue事件循环实现

vue事件循环实现

Vue 的事件循环实现 Vue 的事件循环机制主要依赖于 JavaScript 的原生事件循环(Event Loop),并结合 Vue 自身的响应式系统和异步更新队列机制。以下是 Vue 事件循环的核…

vue实现全选事件

vue实现全选事件

Vue 实现全选事件 在 Vue 中实现全选功能通常涉及以下关键步骤: 数据绑定与状态管理 使用 v-model 绑定复选框的状态,确保数据与视图同步。通常需要一个数组存储选中项和一个布尔值控制全选…