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

vue实现事件监听

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

父组件通过 v-on 监听:

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

事件修饰符

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

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中实现点击旋转轮盘效果,可以通过CSS动画和Vue的数据绑定结合完成。以下是一个完整的实现方案: 准备工作 需要安装Vue.js环境,可以通过CDN引入或使用Vue C…

实现vue模版

实现vue模版

Vue 模板的基本结构 Vue 模板基于 HTML 语法,通过 Vue 的指令和插值实现动态渲染。以下是一个基础模板示例: <template> <div id="app"…

vue实现级联

vue实现级联

Vue 实现级联选择器的方法 级联选择器(Cascader)是常见的表单组件,用于处理多层级联动数据选择(如省市区选择)。以下是几种实现方式: 基于 Element UI 的 el-cascader…

jquery实现vue

jquery实现vue

jQuery 和 Vue.js 是两种不同理念的前端工具,jQuery 以 DOM 操作和事件驱动为核心,而 Vue.js 是数据驱动的现代化框架。如果想用 jQuery 实现类似 Vue 的功能(如…

vue 实现excel

vue 实现excel

Vue 实现 Excel 功能 前端导出 Excel 使用 xlsx 库可以轻松实现前端 Excel 导出功能。安装依赖: npm install xlsx 导出 Excel 示例代码: impo…

vue实现增加

vue实现增加

实现 Vue 中的新增功能 在 Vue 中实现新增功能通常涉及数据绑定、表单处理和状态管理。以下是几种常见的实现方式: 数据绑定与列表渲染 通过 v-model 绑定表单输入,使用数组的 push…