当前位置:首页 > 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事件总线

使用 EventBus 实现全局事件通信 在 Vue 中,可以通过创建一个独立的 Vue 实例作为事件总线(EventBus)来实现组件间的通信。这种方法适用于非父子组件或跨层级组件之间的通信。 创…

jquery鼠标事件

jquery鼠标事件

jQuery鼠标事件概述 jQuery提供了一系列鼠标事件处理方法,用于响应用户的鼠标操作,如点击、悬停、移动等。这些事件通过简洁的语法绑定到DOM元素,实现交互功能。 常用鼠标事件方法 cl…

vue实现事件捕获

vue实现事件捕获

Vue 中实现事件捕获的方法 在 Vue 中,默认情况下事件是通过冒泡机制传递的。如果需要实现事件捕获,可以通过以下方式: 使用 .capture 修饰符 Vue 提供了 .capture 事件修…

vue实现事件委托

vue实现事件委托

事件委托的概念 事件委托是一种利用事件冒泡机制的技术,将子元素的事件监听绑定到父元素上,通过事件目标(event.target)判断实际触发事件的子元素,从而减少事件监听器的数量,提升性能。…

vue实现事件绑定

vue实现事件绑定

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

vue中实现点击事件

vue中实现点击事件

在 Vue 中实现点击事件的方法 使用 v-on 指令绑定点击事件 Vue 提供了 v-on 指令用于监听 DOM 事件。可以通过 v-on:click 或简写为 @click 来绑定点击事件。 &…