Vue事件处理中的事件对象的获取实现方式

 更新时间:2025年06月17日 16:19:32   作者:WZMeiei  
这篇文章主要介绍了Vue事件处理中的事件对象的获取实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

事件对象 是浏览器在触发事件(比如点击按钮)时,自动生成的一个 “数据包”,里面存着事件的详细信息(比如点了哪个按钮、点在页面的坐标、事件类型是点击还是输入)。

Vue 里有 2 种方式拿到这个 “数据包”,本质都是为了拿到事件信息做交互,只是用法场景不同。

方式 1:方法参数自动接收(最简单常用)

场景:你只需要事件对象,不需要传额外参数时,用这种方式。

代码示例

<!-- 按钮点击时,Vue 会自动把事件对象传给 greet 方法 -->
<button @click="greet">点我Greet</button>
greet(cusEvent) { 
  // cusEvent 就是事件对象!名字你随便取(比如 e、event、myEvent 都可以)
  console.log(cusEvent.target.tagName); // 打印触发事件的标签名(比如 BUTTON)
}

类比理解

@click="greet" 想象成:

  • 你点按钮 → 浏览器 “扔出” 一个事件对象 → Vue 自动 “接住”,并把它当 “默认礼物” 塞给 greet 方法。
  • 方法里的参数名(比如 cusEvent),就像你给这个 “礼物” 起的外号,叫啥都行,只要能拿到里面的信息。

方式 2:用 $event 手动传递(需要传额外参数时用)

场景:你不仅需要事件对象,还想传其他参数(比如 ID、状态)时,必须用 $event 手动把事件对象传过去。

代码示例

<!-- 点击时,主动用 $event 把事件对象传给 greet2,同时还能传其他参数(比如 '额外信息') -->
<button @click="greet2('额外信息', $event)">点我Greet2</button>
greet2(msg, event) { 
  // msg 是你传的 '额外信息',event 是 $event 对应的事件对象,这个名字可以自己定义
  console.log(msg); // 打印:额外信息
  console.log(event.clientX); // 打印点击位置的 X 坐标
}

类比理解

@click="greet2('额外信息', $event)" 想象成:

你点按钮时,想给 greet2 方法传 2 个 “礼物”

  • 第一个礼物:你手动写的 '额外信息'(自定义参数)。
  • 第二个礼物:必须用 $event 这个 “固定包装”,把事件对象包起来传过去。

方法里的参数(msg, event)要和传递顺序对应,这样才能正确拿到两个 “礼物”。

两种方式的核心区别

对比项方式 1(自动接收)方式 2(用 $event 手动传)
何时用只需要事件对象,不需要额外参数时需要同时传事件对象 + 其他自定义参数时
模板写法@click="方法名"(无需传参)@click="方法名(自定义参数, $event)"
方法参数名自定义(比如 cusEvent、e 都行)要和传递顺序对应(比如 msg, event)
是否依赖 $event不依赖,Vue 自动传事件对象必须用 $event 手动传事件对象

举个生活例子加深理解

假设你是餐厅服务员(方法),客人(按钮)点餐(触发事件):

  • 方式 1:客人只说 “结账”(@click="greet"),系统自动给你递上 “账单”(事件对象),你直接处理账单(greet(cusEvent))。
  • 方式 2:客人说 “结账,再加一份小吃”(@click="greet2('加小吃', $event)"),你需要同时拿到 “账单”(事件对象,用 $event 传)和 “加小吃” 的要求(自定义参数),再一起处理。

总结

  • 事件对象 是浏览器给的 “事件详情包”,Vue 提供了 2 种拿包方式。
  • 简单场景用 方式 1(自动接收),复杂场景(需要传额外数据)用 方式 2$event 手动传)。
  • 记住 $event 是 Vue 规定的 “传事件对象的固定语法”,而方法里的参数名可以自己随便取~

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue CLI3基础学习之pages构建多页应用

    Vue CLI3基础学习之pages构建多页应用

    这篇文章主要给大家介绍了关于Vue CLI3基础学习之pages构建多页应用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Vue CLI3具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • 基于Vue3的打卡计时器实现方案

    基于Vue3的打卡计时器实现方案

    在日常工作和生活中,我们经常需要记录时间间隔,比如工作打卡、学习时长、项目耗时等,今天我将为大家介绍一个基于Vue3的打卡计时器实现方案,需要的朋友可以参考下
    2026-03-03
  • vite如何构建vue3项目

    vite如何构建vue3项目

    本文介绍了如何使用Vite快速搭建Vue项目,强调Vite对Node.js版本有最低要求(>=12.0.0),提供了环境准备、安装步骤和启动指南,旨在帮助开发者高效启动Vue项目
    2024-10-10
  • Vue3实现虚拟列表的示例代码

    Vue3实现虚拟列表的示例代码

    虚拟列表是一种优化长列表渲染的技术,它可以在保持流畅性的同时,渲染大量的数据,本文主要介绍了如何通过Vue3实现一个虚拟列表,感兴趣的可以了解下
    2024-11-11
  • vue实现类似淘宝商品评价页面星级评价及上传多张图片功能

    vue实现类似淘宝商品评价页面星级评价及上传多张图片功能

    最近在写一个关于vue的商城项目,然后集成在移动端中,开发需求中有一界面,类似淘宝商城评价界面!接下来通过本文给大家分享vue实现类似淘宝商品评价页面星级评价及上传多张图片功能,需要的朋友参考下吧
    2018-10-10
  • Vue3 源码解读之 Teleport 组件使用示例

    Vue3 源码解读之 Teleport 组件使用示例

    这篇文章主要为大家介绍了Vue3 源码解读之 Teleport 组件使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • vue-cli脚手架搭建的项目去除eslint验证的方法

    vue-cli脚手架搭建的项目去除eslint验证的方法

    今天小编就为大家分享一篇vue-cli脚手架搭建的项目去除eslint验证的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • 详解​Vue虚拟DOM如何提高前端开发效率

    详解​Vue虚拟DOM如何提高前端开发效率

    这篇文章主要为大家介绍了详解​Vue虚拟DOM如何提高前端开发效率,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • vue2.0 better-scroll 实现移动端滑动的示例代码

    vue2.0 better-scroll 实现移动端滑动的示例代码

    本篇文章主要介绍了vue2.0 better-scroll 实现移动端滑动的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2018-01-01
  • vue页面使用多个定时器的方法

    vue页面使用多个定时器的方法

    这篇文章主要为大家详细介绍了vue页面使用多个定时器的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09

最新评论