当前位置:首页 > VUE

vue实现自定义事件

2026-02-09 20:56:28VUE

Vue 自定义事件实现方法

使用 $emit 触发自定义事件

在子组件中通过 $emit 方法触发事件,父组件通过 v-on 监听。

子组件代码示例:

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

父组件监听示例:

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

父组件方法定义:

methods: {
  handleEvent(data) {
    console.log('收到事件数据:', data)
  }
}

使用 v-model 实现双向绑定

通过自定义 model 选项和 $emit('input') 实现类似 v-model 的双向绑定。

子组件代码:

props: ['value'],
methods: {
  updateValue(newValue) {
    this.$emit('input', newValue)
  }
}

父组件使用:

vue实现自定义事件

<custom-input v-model="inputValue" />

使用事件总线(Event Bus)

创建全局事件总线实现跨组件通信。

创建事件总线:

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

发送事件:

EventBus.$emit('event-name', payload)

接收事件:

vue实现自定义事件

EventBus.$on('event-name', payload => {
  // 处理事件
})

使用 .sync 修饰符

实现父子组件双向数据绑定,Vue 2.x 特有语法。

子组件触发更新:

this.$emit('update:title', newTitle)

父组件使用:

<child-component :title.sync="pageTitle" />

Vue 3 的 emits 选项

Vue 3 中显式声明组件发出的自定义事件,提供更好的文档和类型检查。

组件定义:

export default {
  emits: ['custom-event'],
  methods: {
    triggerEvent() {
      this.$emit('custom-event', data)
    }
  }
}

注意事项

  • 自定义事件名建议使用 kebab-case 命名
  • 复杂数据建议使用对象包装
  • 及时移除事件监听避免内存泄漏
  • Vue 3 中移除了 $on$off 等实例方法,需使用外部库替代事件总线

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

相关文章

vue事件实现

vue事件实现

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

vue 实现事件委托

vue 实现事件委托

Vue 中实现事件委托的方法 事件委托是一种通过将事件监听器绑定到父元素而非子元素的技术,利用事件冒泡机制统一处理子元素的事件。Vue 中可以通过以下方式实现: 1. 使用 v-on 和事件修饰符…

vue 实现拖拽事件

vue 实现拖拽事件

实现拖拽事件的基本步骤 在Vue中实现拖拽功能可以通过HTML5的Drag and Drop API或第三方库如vuedraggable来完成。以下是两种方法的详细说明。 使用HTML5 Drag…

vue实现事件绑定

vue实现事件绑定

Vue 事件绑定实现方法 Vue 提供了多种方式实现事件绑定,以下是常用方法: v-on 指令 使用 v-on 指令绑定事件监听器,语法为 v-on:event="handler" 或简写为 @ev…

vue实现页面单击事件

vue实现页面单击事件

Vue 实现页面单击事件的方法 在 Vue 中实现单击事件可以通过 v-on 指令或 @ 简写来完成。以下是几种常见的实现方式: 使用 v-on 指令绑定单击事件 通过 v-on:click 可以直…

简单实现vue事件机制

简单实现vue事件机制

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