vue事件实现
Vue 事件实现
Vue 的事件系统基于 v-on 指令(或简写为 @)实现,支持原生 DOM 事件和自定义事件。以下是核心实现方式:
绑定 DOM 事件
在模板中通过 v-on 监听原生事件,触发组件方法:
<button v-on:click="handleClick">点击</button>
<!-- 简写形式 -->
<button @click="handleClick">点击</button>
事件处理方法
在组件选项中定义方法:

methods: {
handleClick(event) {
console.log('触发点击事件', event.target);
}
}
传递参数
需要传递参数时,使用内联语句:
<button @click="handleClick('参数', $event)">带参数点击</button>
事件修饰符
Vue 提供修饰符简化事件处理:

.stop:调用event.stopPropagation().prevent:调用event.preventDefault().native:监听组件根元素的原生事件<form @submit.prevent="onSubmit"></form>
自定义事件
子组件通过 $emit 触发事件:
this.$emit('custom-event', payload);
父组件监听自定义事件:
<child-component @custom-event="handleCustomEvent" />
事件总线(跨组件通信)
创建全局事件总线(适用于非父子组件):
// 创建总线
const EventBus = new Vue();
// 发送事件
EventBus.$emit('event-name', data);
// 接收事件
EventBus.$on('event-name', (data) => {
console.log(data);
});
注意事项
- 组件销毁前需通过
EventBus.$off()解绑事件避免内存泄漏 - Vue 3 推荐使用
mitt等第三方库替代事件总线






