当前位置:首页 > VUE

vue如何实现事件处理

2026-02-21 09:38:00VUE

Vue 事件处理基础

Vue 通过 v-on 指令(简写为 @)实现事件绑定。语法格式为 v-on:事件名="处理函数"@事件名="处理函数"。例如点击事件:

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

在 Vue 实例的 methods 中定义事件处理函数:

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

事件修饰符

Vue 提供事件修饰符,用于简化常见事件处理逻辑:

  • .stop:阻止事件冒泡

    <button @click.stop="handleClick">不会冒泡</button>
  • .prevent:阻止默认行为

    <form @submit.prevent="onSubmit">阻止表单提交</form>
  • .capture:使用捕获模式

  • .self:仅当事件从元素本身触发时执行

  • .once:事件只触发一次

  • .passive:提升滚动性能

    vue如何实现事件处理

多个修饰符可串联使用:

<a @click.stop.prevent="handleLink">阻止默认且停止冒泡</a>

按键修饰符

处理键盘事件时,可使用特定按键修饰符:

<input @keyup.enter="submit" placeholder="按回车提交">

常用按键别名包括 .enter.tab.delete.esc.space.up.down.left.right

系统修饰键

组合键可通过 .ctrl.alt.shift.meta 处理:

<button @click.ctrl="handleCtrlClick">需按住Ctrl点击</button>

鼠标按钮修饰符

.left.right.middle 指定鼠标按键:

vue如何实现事件处理

<button @click.right="handleRightClick">右键点击</button>

自定义事件

子组件通过 $emit 触发自定义事件:

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

父组件通过 v-on 监听:

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

事件总线(Event Bus)

创建全局事件总线实现非父子组件通信:

// 创建Event Bus
const bus = new Vue()

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

// 接收事件
bus.$on('event-name', (data) => {
  // 处理逻辑
})

原生事件绑定组件

在组件上监听原生事件需添加 .native 修饰符:

<my-component @click.native="handleClick"></my-component>

Vue 3 中该修饰符已被移除,需使用 emits 选项显式声明事件。

事件处理中的 this 指向

methods 中的函数自动绑定当前 Vue 实例,箭头函数会改变 this 指向,应避免使用:

methods: {
  // 正确写法
  handleClick() {
    this.message = 'Clicked' // this 指向Vue实例
  },

  // 错误写法(箭头函数)
  badHandleClick: () => {
    this.message = 'Error' // this 不再指向Vue实例
  }
}

分享给朋友:

相关文章

vue底层如何实现

vue底层如何实现

Vue 底层的核心实现机制 Vue 的底层实现主要围绕响应式系统、虚拟 DOM 和组件化架构展开。以下是关键技术的详细解析: 响应式系统 依赖追踪与发布订阅模式 通过 Object.definePr…

react如何实现插槽

react如何实现插槽

React 实现插槽的方法 React 本身没有直接提供类似 Vue 的插槽(slot)概念,但可以通过以下几种方式实现类似功能: 使用 props.children React 组件可以通过 pr…

react如何实现混入

react如何实现混入

在React中实现混入(Mixin)功能可以通过以下几种方式实现,React官方已不推荐使用传统的React.createClass混入方式,但可通过高阶组件或自定义Hook替代。 高阶组件(HOC…

h5页面如何实现

h5页面如何实现

实现H5页面的方法 H5页面是基于HTML5技术的网页,通常用于移动端和响应式设计。以下是实现H5页面的关键步骤和技术要点。 基础结构 使用HTML5的DOCTYPE声明作为页面的起始。HTML5简…

vue如何实现分离

vue如何实现分离

Vue 实现代码分离的方法 Vue 提供了多种方式实现代码分离,提升项目的可维护性和模块化程度。以下是常见的几种方法: 组件化开发 将功能拆分为独立的 Vue 组件,每个组件包含自己的模板、逻辑和样…

vue如何实现echarts

vue如何实现echarts

Vue 中集成 ECharts 的方法 安装 ECharts 依赖包 通过 npm 或 yarn 安装核心库: npm install echarts --save # 或 yarn add e…