当前位置:首页 > VUE

vue实现自定义事件

2026-03-06 20:48:54VUE

Vue 自定义事件实现方法

在 Vue 中,自定义事件是通过 $emit 方法触发的,允许子组件向父组件传递数据。以下是实现自定义事件的几种常见方式:

基础用法

子组件通过 $emit 触发事件,父组件通过 v-on 监听:

// 子组件
<button @click="$emit('custom-event', 'payload')">触发事件</button>

// 父组件
<child-component @custom-event="handleEvent" />

事件名规范

建议使用 kebab-case 命名事件(如 custom-event),因为在 DOM 模板中事件名会自动转换为小写。

高级用法

通过 emits 选项声明事件,提高可读性并支持校验:

// 子组件
export default {
  emits: {
    'custom-event': (payload) => {
      return typeof payload === 'string' // 校验参数
    }
  },
  methods: {
    triggerEvent() {
      this.$emit('custom-event', 'data')
    }
  }
}

事件总线模式

通过空的 Vue 实例作为中央事件总线(适用于非父子组件通信):

vue实现自定义事件

// eventBus.js
import Vue from 'vue'
export const EventBus = new Vue()

// 组件A(发送事件)
EventBus.$emit('event-name', data)

// 组件B(接收事件)
EventBus.$on('event-name', (data) => {})

注意事项

  • 组件销毁前应使用 EventBus.$off() 移除事件监听
  • Vue 3 推荐使用 mitt 等第三方库替代事件总线
  • 复杂场景建议使用 Vuex 或 Pinia 进行状态管理

标签: 自定义事件
分享给朋友:

相关文章

uniapp事件介绍

uniapp事件介绍

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

vue实现全屏事件

vue实现全屏事件

Vue 实现全屏事件的方法 在 Vue 中实现全屏功能可以通过浏览器提供的 Fullscreen API 来实现。以下是几种常见的实现方式: 使用原生 Fullscreen API 通过调用 Ele…

vue实现change事件

vue实现change事件

Vue 实现 change 事件的方法 在 Vue 中,可以通过多种方式监听和处理 change 事件,以下是常见的实现方法: 使用 v-on 或 @ 语法监听 change 事件 <tem…

vue事件如何实现

vue事件如何实现

Vue 事件实现方法 Vue 中事件通过 v-on 指令或 @ 简写实现,支持原生 DOM 事件和自定义事件。 原生 DOM 事件绑定 <button v-on:click="handleCl…

简单实现vue事件机制

简单实现vue事件机制

Vue 事件机制实现 Vue 的事件机制主要依赖于 $on、$emit 和 $off 方法,用于组件间的通信。以下是简化版的事件总线实现: 1. 创建事件总线 class EventBus {…

vue怎么实现事件嵌套

vue怎么实现事件嵌套

事件嵌套的实现方法 在Vue中实现事件嵌套通常涉及在父组件中监听子组件的事件,或在同一组件内处理多个事件的联动。以下是几种常见场景的解决方案: 父子组件间事件嵌套 父组件通过v-on监听子组件触发的…