当前位置:首页 > 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 Router 的路由配置可以天然转化为菜单结构,适合权限与路由绑定的系统: // router/index.js const route…

vue怎么实现数据检测

vue怎么实现数据检测

Vue 数据检测的实现方式 Vue 通过响应式系统实现数据检测,核心机制基于 Object.defineProperty(Vue 2)或 Proxy(Vue 3)。以下是具体实现方法: 基于 Vu…

vue实现用户信息表

vue实现用户信息表

Vue 实现用户信息表的方法 使用 Vue CLI 创建项目 安装 Vue CLI 并初始化项目: npm install -g @vue/cli vue create user-info-tab…

vue实现导航栏切图

vue实现导航栏切图

Vue 实现导航栏切图 使用 Vue Router 实现基础导航 在 Vue 项目中,可以通过 Vue Router 实现导航栏的路由切换。创建一个导航栏组件,并在其中使用 <router-li…

vue实现画圆弧并着色

vue实现画圆弧并着色

在 Vue 中实现画圆弧并着色 使用 Canvas API 绘制圆弧 在 Vue 组件的 mounted 钩子中,通过 Canvas API 绘制圆弧。创建一个 canvas 元素并获取其上下文:…

vue调用接口实现退出

vue调用接口实现退出

实现Vue退出功能的步骤 在Vue中调用接口实现退出功能通常需要与后端API交互,以下是实现方法: 前端实现 创建退出方法,调用后端API接口: methods: { logout()…