9种 Vuejs 常用事件修饰符与使用指南

前言

事件修饰符是 Vue.js 中一种特殊的语法标记,通过在事件名称后加上 . 和修饰符名称,可以轻松地修改事件的默认行为。这些修饰符不仅能够提升代码的清晰度,还能够避免一些常见的编程陷阱。Vue.js 提供了一系列事件修饰符,帮助开发者更精细地控制事件的行为,从而简化代码逻辑,提高代码的可维护性。

什么是事件修饰符?

在 Vue.js 中,事件修饰符是一种特殊的标记,用于修改事件的行为。它们可以帮助我们简化代码,并且避免一些常见的陷阱。修饰符是通过在事件名称后加上 . 和修饰符名称的方式来定义的。

常见的事件修饰符

1. .stop

event.stopPropagation() 方法用于阻止事件冒泡到父元素。使用 .stop 修饰符可以轻松实现这一点。

<!-- 阻止点击事件向上冒泡 -->
<button @click.stop="doSomething">Click me</button>

2. .prevent

event.preventDefault() 方法用于阻止默认事件的发生。使用 .prevent 修饰符可以简化这一操作。

<!-- 阻止表单提交 -->
<form @submit.prevent="onSubmit">提交</form>

3. .capture

默认情况下,事件是以冒泡方式触发的。.capture 修饰符可以使事件以捕获方式触发。

<!-- 使用捕获模式 -->
<div @click.capture="onCapture">捕获模式</div>

4. .self

.self 修饰符用于只在事件目标是当前元素自身时触发处理函数,而不是事件冒泡的情况。

<!-- 仅在点击本元素时触发 -->
<div @click.self="onClick">点击我</div>

5. .once

.once 修饰符用于事件只触发一次,之后自动移除监听器。

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

6. .left, .right, .middle

这些修饰符用于指定鼠标按钮,分别对应鼠标左键、右键和中键点击事件。

<!-- 仅在左键点击时触发 -->
<button @click.left="onLeftClick">左键点击</button><!-- 仅在右键点击时触发 -->
<button @click.right="onRightClick">右键点击</button><!-- 仅在中键点击时触发 -->
<button @click.middle="onMiddleClick">中键点击</button>

7. .passive

.passive 修饰符用于提升滚动性能。它告诉浏览器你不会调用 event.preventDefault(),从而让浏览器可以更加高效地处理滚动事件。

<!-- 提升滚动性能 -->
<div @scroll.passive="onScroll">滚动事件</div>

8. .exact

.exact 修饰符用于精确控制事件触发条件。它确保事件只在没有其他修饰键(如 Ctrl、Alt、Shift 等)按下的情况下触发。

<!-- 仅在没有修饰键按下时触发 -->
<button @click.exact="onExactClick">精确点击</button>

你可以结合其他修饰符使用 .exact 来实现更复杂的条件判断:

<!-- 仅在按下 Ctrl 键且没有其他修饰键时触发 -->
<button @click.ctrl.exact="onExactCtrlClick">精确 Ctrl 点击</button>

9. .ctrl, .alt, .shift, .meta

分别对应按下 Ctrl、Alt、Shift 和 Meta(Command 键)的情况。可以结合其他修饰符使用。

<button @click.ctrl="onCtrlClick">Ctrl 点击</button>
<button @click.alt="onAltClick">Alt 点击</button>
<button @click.shift="onShiftClick">Shift 点击</button>
<button @click.meta="onMetaClick">Meta 点击</button>

组合使用事件修饰符

在实际开发中,你可以组合使用多个事件修饰符来实现复杂的交互逻辑。例如,你可以结合 .prevent 和 .stop 修饰符来阻止表单提交并阻止事件冒泡:

<!-- 阻止表单提交并阻止事件冒泡 -->
<form @submit.prevent.stop="onSubmit">提交</form>

实际应用

1. 拖拽排序

在实现拖拽排序功能时,使用 .stop 和 .self 修饰符可以有效避免事件冒泡导致的意外行为:

<!-- 在拖拽元素上应用修饰符 -->
<div v-for="item in items" :key="item.id" @mousedown.stop.self="onDragStart(item)">{{ item.name }}
</div>

2. 弹窗控制

在实现弹窗组件时,使用 .prevent 和 .once 修饰符可以简化控制逻辑:

<!-- 阻止默认点击行为,并确保点击事件只触发一次 -->
<button @click.prevent.once="openModal">打开弹窗</button><div v-if="isModalOpen" @click.self="closeModal"><!-- 弹窗内容 -->
</div>

3. 高性能滚动事件

在处理大量滚动事件时,使用 .passive 修饰符可以提升性能:

<!-- 提升滚动性能 -->
<div @scroll.passive="onScroll"><!-- 内容 -->
</div>

总结

Vue.js 的事件修饰符为我们提供了强大且灵活的事件处理能力。通过合理使用这些修饰符,我们可以编写出更加简洁、高效和易于维护的代码。在实际开发中,理解和应用这些修饰符,将让 Vue 开发更加顺畅。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/461004.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker离线安装达梦数据库

文章目录 下载达梦数据库docker镜像上传DM8镜像文件将DM8镜像导入到本地docker镜像仓库中查看本地docker镜像仓库是否存在DM8镜像带参数启动DM8docker启动DM8默认用户名/密码 下载达梦数据库docker镜像 达梦数据库官网 https://www.dameng.com/ 点击下载中心&#xff0c;选择D…

产品宣传册制作成电子产品宣传册用什么软件?

​随着科技的飞速发展&#xff0c;电子产品已经渗透到我们生活的方方面面&#xff0c;电子宣传册作为一种新兴的传播媒介&#xff0c;受到企业的青睐。将传统的纸质产品宣传册制作成电子宣传册&#xff0c;不仅能够降低成本、提高传播效率&#xff0c;还能更好地满足消费者的阅…

linux之网络子系统- TCP连接建立过程 三次握手四次挥手

一、相关实际问题 为什么服务端程序都需要先listen一下半连接队列和全连接队列长度如何确定“Cannot assign requested address”这个报错是怎么回事一个客户端端口可以同时用在两条连接上吗服务端半/全连接队列满了会怎么样新连接的soket内核对象是什么时候建立的建立一条TCP…

[JAVAEE] 多线程的案例(四) - 定时器

目录 一. 什么是定时器? 二. java中的定时器类 三. 定时器的简单使用. 四. 模拟实现定时器 4.1 实现 MyTimerTask 4.2 实现 MyTimer 一. 什么是定时器? 定时器相当于闹钟, 时间到了就执行一些逻辑. 二. java中的定时器类 使用Timer类实例化一个定时器对象. Timer类中的…

Java调用chatgpt

目前openai的chatgpt在国内使用有一定难度&#xff0c;不过国内的大模型在大部分情况下已经不弱于chatgpt&#xff0c;而且还更便宜&#xff0c;又能解决国内最敏感的内容安全问题。本文后续以spring ai调用国内chatgpt厂商实现为例&#xff0c;讲解怎么构建一个java调用chatgp…

海外云手机是什么?对外贸电商有什么帮助?

在外贸电商领域&#xff0c;流量引流已成为卖家们关注的核心问题。越来越多的卖家开始利用海外云手机&#xff0c;通过TikTok等社交平台吸引流量&#xff0c;以推动商品在海外市场的销售。那么&#xff0c;海外云手机到底是什么&#xff1f;它又能为外贸电商卖家提供哪些支持呢…

uniapp 底部导航栏tabBar设置后不显示的问题——已解决

uniapp 底部导航栏tabBar设置后不显示的问题——已解决 网上找了一堆解决办法&#xff0c;挨个对着试吧 解决办法一&#xff1a;tabBar里的list第一项和page中的第一项要相同&#xff0c;确实就能显示了。但是问题来了&#xff0c;page中的第一项是入口页&#xff0c;那就意味…

【AI开源项目】OneAPI -核心概念、特性、优缺点以及如何在本地和服务器上进行部署!

本文将深入探讨OneAPI的核心概念、特性以及如何在本地和服务器上进行部署&#xff0c;帮助开发者更高效地利用这一强大的工具。 文章目录 什么是OneAPI&#xff1f;OneAPI的核心特性 OneAPI的优势与缺点OneAPI的安装与使用教程1. OneAPI的本地构建1.1 下载源代码1.2 构建前端1…

什么是x86架构,什么是arm架构

什么是 x86 架构&#xff1f; x86 架构是一种经典的指令集架构&#xff08;ISA&#xff09;&#xff0c;最早由英特尔在 1978 年推出&#xff0c;主要用于 PC、服务器等领域。 它是一种复杂指令集计算&#xff08;CISC&#xff09;架构&#xff0c;支持大量的复杂指令和操作&…

基于单片机的智能家居排气扇系统设计

1系统方案设计 本设计基于单片机的智能家居排气扇系统采用STM32单片机作为主控制器&#xff0c;通过DHT11温湿传感器和MQ-2烟雾传感器实现温度、湿度、烟雾检测&#xff0c;在自动模式下&#xff0c;可以根据烟雾浓度通过PWM调速的方式自动调节排气扇的速度&#xff0c;而在手动…

C++学习笔记3——存储持续性、作用域和链接性

1. 存储持续性 自动存储持续性&#xff1a;在函数中定义或声明的变量存储持续性为自动的&#xff0c;它们在程序开始执行其所属的函数或代码块时被创建&#xff0c;在执行完函数或代码块时&#xff0c;使用的内存被释放&#xff1b; 静态存储持续性&#xff1a;在函数定义外定义…

ios Framework版本号的问题。

自己创建的framework和普通的app的版本号设置的地方是有所有不同的。 framework 的版本号是在 TARGETS -> Build Settings -> current Project Version 这个地方设置的&#xff0c; 在创建framework的时候xcode 会自动创建一个framework.h的文件名&#xff0c;framewo…

Linux 开机自动挂载硬盘

在日常使用 Linux 系统的过程中&#xff0c;我们可能需要挂载一些机械硬盘或者移动硬盘来存储数据。手动挂载虽然简单&#xff0c;但每次重启后都需要重新操作&#xff0c;未免有些繁琐。那么&#xff0c;如何让硬盘在开机时自动挂载呢&#xff1f;本篇博客将详细介绍如何通过配…

SSRF-pikachu

系列目录 第一章 暴力破解 第二章 Cross-Site Scripting-pikachu 第三章 CSRF 第四章 sql-injection 第五章 RCE 第六章 File inclusion 第七章 Unsafe filedownload 第八章 Unsafe fileupload 第九章 Over Permission 第十章 ../../ 第十一章 敏感信息泄露 第十二…

配电柜弧光保护装置的应用与功能

随着配电系统复杂度的提升&#xff0c;电弧故障可能带来的高温与巨大电磁冲击对系统及人员的安全构成了威胁。弧光保护装置因其快速识别和切断故障的能力&#xff0c;成为现代配电系统中不可或缺的一部分。本文将结合ARB5系列弧光保护装置的设计&#xff0c;对弧光保护的工作原…

12-Docker发布微服务

12-Docker发布微服务 Docker发布微服务 搭建SpringBoot项目 新建一个SpringBoot项目 选择依赖项Spring Web和Spring Boot Actuator 在com.qi.docker_boot下创建controller目录&#xff0c;并在该目录下创建OrderController的java类 OrderControllerjava类的内容如下&#xf…

ETL集成工具丨如何运用ETLCloud单步调试断点功能

在现代数据处理领域&#xff0c;ETLCloud 的单步调试断点功能正成为数据管理的重要工具。ETLCloud 是一个强大的云端数据处理平台&#xff0c;它提供了灵活的单步调试功能&#xff0c;使得用户能够逐步跟踪和分析数据处理流程。本文将探讨如何运用 ETLCloud 的单步调试断点功能…

基于LORA的一主多从监测系统_主从节点交互

上一步我们完成了子节点与PC交互&#xff0c;下面我们使用主节点和从节点进行交互&#xff0c;目前是一个主节点、单个从节点&#xff0c;相当于是一对一传输&#xff0c;主要的思路如下&#xff1a; ------>主节点发送问询帧 ------>延时等待子节点回复 ------>子…

PPT制作新选择:本地部署PPTist结合内网穿透实现实时协作和远程使用

文章目录 前言1. 本地安装PPTist2. PPTist 使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 配置固定公网地址 &#x1f4a1; 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击跳转到网站】 前…

【GO学习笔记 go基础】编译器下载安装+Go设置代理加速+项目调试+基础语法+go.mod项目配置+接口(interface)

编译器下载&安装 下载并安装go1.23.2.windows-amd64.msi默认安装再C:\Program Files\Go\ PS C:\Users\kingchuxing\Documents> go version go version go1.23.2 windows/amd64Go设置GOPROXY国内加速 windows // 启用 Go Modules 功能 PS C:\Users\kingchuxing…