当前位置:首页 > 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)
  }
}

父组件使用:

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

使用事件总线(Event Bus)

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

创建事件总线:

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

发送事件:

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

接收事件:

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

使用 .sync 修饰符

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

子组件触发更新:

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

父组件使用:

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

Vue 3 的 emits 选项

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

组件定义:

vue实现自定义事件

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

注意事项

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

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

相关文章

java如何自定义异常

java如何自定义异常

自定义异常的基本概念 在Java中,自定义异常是通过继承现有的异常类来实现的。通常选择继承Exception(受检异常)或RuntimeException(非受检异常)。自定义异常允许开发者根据业务需…

vue实现事件代理

vue实现事件代理

事件代理的概念 事件代理(Event Delegation)是一种利用事件冒泡机制,将子元素的事件委托给父元素统一处理的技术。在Vue中,可以通过v-on指令或$on方法实现事件代理,减少事件监听器的…

vue 实现拖拽事件

vue 实现拖拽事件

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

vue实现拖拽事件

vue实现拖拽事件

Vue 实现拖拽事件的方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

vue实现事件绑定

vue实现事件绑定

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

vue实现后退事件

vue实现后退事件

监听浏览器后退事件 在Vue中可以通过window.onpopstate或beforeRouteLeave路由守卫实现后退事件监听。以下是两种常用方法: 方法一:使用window.onpopstat…