当前位置:首页 > VUE

vue实现事件监听

2026-02-17 02:49:02VUE

Vue 事件监听实现方法

Vue 提供了多种方式实现事件监听,以下是常见方法:

v-on 指令 使用 v-on 指令绑定事件监听器,语法为 v-on:事件名="处理方法" 或简写为 @事件名="处理方法"

<button v-on:click="handleClick">点击</button>
<button @click="handleClick">简写点击</button>

methods 中定义处理方法 在 Vue 实例的 methods 选项中定义事件处理方法:

methods: {
  handleClick(event) {
    console.log('按钮被点击', event)
  }
}

内联处理器 可以直接在模板中使用 JavaScript 表达式:

vue实现事件监听

<button @click="count++">增加计数</button>

事件修饰符 Vue 提供事件修饰符实现常见 DOM 事件处理需求:

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

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

<!-- 事件只触发一次 -->
<button @click.once="doThis"></button>

按键修饰符 监听特定按键事件:

vue实现事件监听

<input @keyup.enter="submit" />
<input @keyup.13="submit" /> <!-- 使用 keyCode -->

自定义事件 子组件通过 $emit 触发事件,父组件通过 v-on 监听:

// 子组件
this.$emit('custom-event', payload)

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

生命周期钩子 在组件生命周期中监听内部事件:

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

事件总线 对于非父子组件通信,可以使用事件总线:

// 创建事件总线
const EventBus = new Vue()

// 发送事件
EventBus.$emit('event-name', data)

// 接收事件
EventBus.$on('event-name', data => {
  // 处理数据
})

注意事项

  • 组件销毁时应移除全局事件监听避免内存泄漏
  • 事件处理函数应尽可能简单,复杂逻辑建议提取到方法中
  • 自定义事件名建议使用 kebab-case 命名方式
  • 避免在模板中编写复杂逻辑,保持模板简洁

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

相关文章

vue中实现显示和隐藏

vue中实现显示和隐藏

控制显示与隐藏的方法 在Vue中实现元素的显示和隐藏可以通过多种方式完成,以下是常见的几种方法: 1. 使用v-if指令v-if根据条件动态添加或移除DOM元素,适合需要频繁切换的场景。当条件为fa…

vue 方法实现

vue 方法实现

在 Vue 中,方法的实现通常通过 methods 选项完成。以下是 Vue 方法实现的核心要点和示例: 基本方法定义 在 Vue 组件中定义方法时,需将函数声明放在 methods 对象内。这些方…

vue 实现图片

vue 实现图片

Vue 实现图片加载与展示的方法 在 Vue 中实现图片加载和展示可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind 绑定图片路径 通过 v-bind(或简写为 :)动态绑定图片的…

vue实现watch

vue实现watch

监听数据变化 在Vue中,watch用于监听响应式数据的变化并执行回调函数。基本语法如下: watch: { propertyName(newValue, oldValue) { //…

vue下载实现

vue下载实现

Vue 下载实现方法 在 Vue 项目中实现文件下载功能可以通过多种方式完成,以下是几种常见的方法: 使用 <a> 标签实现下载 通过动态创建 <a> 标签并设置 href…

vue实现rem适配

vue实现rem适配

Vue 项目中实现 REM 适配 REM(Root EM)是一种基于根元素(html)字体大小的相对单位,常用于移动端适配。以下是在 Vue 项目中实现 REM 适配的详细方法。 安装 postcs…