当前位置:首页 > VUE

vue实现事件监听

2026-01-16 01:31:54VUE

Vue 事件监听实现方法

Vue 提供了多种方式实现事件监听,涵盖组件内外交互、原生 DOM 事件处理等场景。以下是核心实现方案:

模板内直接监听

通过 v-on@ 语法监听 DOM 事件:

<button @click="handleClick">点击触发</button>

事件处理函数需定义在组件的 methods 中:

methods: {
  handleClick(event) {
    console.log('事件触发', event.target)
  }
}

自定义事件监听

子组件通过 $emit 触发事件:

this.$emit('custom-event', payload)

父组件通过 v-on 监听:

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

事件修饰符

Vue 提供的事件修饰符可简化常见操作:

<!-- 阻止默认行为 -->
<form @submit.prevent="onSubmit"></form>

<!-- 停止事件冒泡 -->
<div @click.stop="doThis"></div>

<!-- 按键修饰符 -->
<input @keyup.enter="submit" />

生命周期钩子监听

在组件生命周期中添加/移除事件监听:

mounted() {
  window.addEventListener('resize', this.handleResize)
},
beforeDestroy() {
  window.removeEventListener('resize', this.handleResize)
}

事件总线模式

创建全局事件中心实现跨组件通信:

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

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

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

第三方库集成

使用 mitt 等轻量事件库:

import mitt from 'mitt'
const emitter = mitt()

// 发送事件
emitter.emit('foo', { a: 'b' })

// 接收事件
emitter.on('foo', e => console.log(e))

最佳实践建议

  • 组件销毁时需手动移除全局事件监听,避免内存泄漏
  • 复杂场景建议使用 Vuex 进行状态管理而非过度依赖事件总线
  • 自定义事件名推荐使用 kebab-case 命名(如 user-updated

vue实现事件监听

标签: 事件vue
分享给朋友:

相关文章

vue设计与实现下载

vue设计与实现下载

vue设计与实现电子书下载 《Vue.js设计与实现》是一本深入解析Vue.js框架原理的书籍,由霍春阳(HcySunYang)撰写。以下是获取该资源的常见途径: 正版购买渠道 京东、当当、天…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue实现抖动

vue实现抖动

Vue 实现抖动效果 在 Vue 中实现抖动效果可以通过 CSS 动画或 JavaScript 动画库来实现。以下是几种常见的方法: 使用 CSS 动画 通过定义 @keyframes 动画并在…

vue翻页实现

vue翻页实现

Vue翻页实现方法 基础分页组件实现 使用v-for和计算属性实现基础分页逻辑: <template> <div> <ul> <l…

vue实现双向

vue实现双向

Vue 实现双向绑定的方法 Vue 的双向绑定主要通过 v-model 指令实现,它结合了数据绑定和事件监听,适用于表单元素(如 input、select、textarea 等)。以下是几种常见的实现…

lua 实现vue

lua 实现vue

在 Lua 中实现类似 Vue 的响应式框架需要模拟 Vue 的核心功能,包括数据绑定、模板渲染和依赖追踪。以下是实现的关键思路和代码示例: 响应式数据绑定 使用 Lua 的 __index 和…