当前位置: 首页 > news >正文

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 开发更加顺畅。

相关文章:

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

前言 事件修饰符是 Vue.js 中一种特殊的语法标记&#xff0c;通过在事件名称后加上 . 和修饰符名称&#xff0c;可以轻松地修改事件的默认行为。这些修饰符不仅能够提升代码的清晰度&#xff0c;还能够避免一些常见的编程陷阱。Vue.js 提供了一系列事件修饰符&#xff0c;帮助…...

第十四题刮开有奖

这道题还是将我们下载好的附件先查壳 发现无壳且为32位 所以我们用32位的IDA打开 打开后ShftF12发现一串可疑的字符串 我们跟进看看 发现了这个函数 看这里有string数组 首先给了一串七v7 v8v9的数据 下面还有一个函数 我们再跟进一下 发现这大概是前面v7那堆数据的加密方式 我…...

vue3+vite使用dataV后项目运行报错、页面空白问题

Vue 大屏数据展示组件库官网&#xff1a;http://datav.jiaminghi.com/guide/ 我的版本是&#xff1a;“jiaminghi/data-view”: “^2.10.0” 一、dataV引入&#xff0c;看官网也可 // 安装 &#xff08; 我的安装版本 "jiaminghi/data-view": "^2.10.0" …...

PDF 【人工智能白皮书 】【大模型安全实践白皮书】【大模型白皮书】【大模型/深度学习/人工智能原理/心智学习】

【2024 中国人工智能发展白皮书 】【2023 中国人工智能白皮书】【大模型/深度学习/人工智能原理/心智学习】 前言下面所有涉及到的白皮书文件的总下载链接&#xff08;网盘&#xff09;&#xff1a; 2024 人工智能发展白皮书 深圳市易行网数字科技有限公司2024 大模型训练数据白…...

【vue】13.深入理解递归组件

在Vue.js的开发实践中&#xff0c;组件是构建界面的核心概念。而递归组件则是一种特殊的组件&#xff0c;它能够自己调用自己&#xff0c;从而创造出无限嵌套的界面结构。本文将带你了解递归组件的应用&#xff0c;以及如何在Vue中实现和使用它。 一.什么是递归组件&#xff1f…...

【OFDM】OFDM Radar Algorithms in Mobile Communication Networks

[1] Maximum Likelihood Speed and Distance Estimation for OFDM Radar 1-CRB估计 1-初步形式 首先单频信号频率估计的CRB,也就是原文Eq.(3.53) v a r [ ω ^ ] ≥ 6 σ N 2 ( N 2 − 1 ) N \mathrm{var}[\hat{\omega}]\geq\frac{6\sigma_N^2}{(N^2-1)N} var[ω^]≥(N2−…...

如何检测java中的内存泄露及溢出,并预防?

引言 在Java开发中,内存管理是一个至关重要的方面。尽管Java有垃圾回收机制,但开发者仍然需要关注内存泄漏和溢出的问题。 内存泄漏会导致应用程序的性能下降,甚至崩溃,而内存溢出则会导致Java虚拟机(JVM)抛出OutOfMemoryError异常。 本文将探讨如何检测Java项目中的内…...

kafka 如何减少数据丢失?

大家好&#xff0c;我是锋哥。今天分享关于【kafka 如何减少数据丢失?】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka 如何减少数据丢失? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Apache Kafka 是一个高吞吐量的分布式消息队列&#xff0c;广泛用…...

CTF-PWN: 虚表(vtable)

vtable vtable&#xff08;虚表&#xff0c;virtual table&#xff09;是面向对象编程中的一个关键概念&#xff0c;主要用于实现多态性&#xff08;polymorphism&#xff09;。它是一种数据结构&#xff0c;通常是一个指针数组&#xff0c;包含了类的虚函数&#xff08;virtu…...

Redis 集群 总结

前言 相关系列 《Redis & 目录》&#xff08;持续更新&#xff09;《Redis & 集群 & 源码》&#xff08;学习过程/多有漏误/仅作参考/不再更新&#xff09;《Redis & 集群 & 总结》&#xff08;学习总结/最新最准/持续更新&#xff09;《Redis & 集群…...

2024校园交友系统构建指南/保姆版教程与技巧uniapp+php支持二开

一、建构技巧 1.前后端分离:采用前后端分离的开发模式&#xff0c;有助于提升开发效率&#xff0c;降低维护成本。前端专注于用户界面和交互体验&#xff0c;后端专注于业务逻辑和数据处理。 2.数据安全与隐私保护&#xff1a;实现细粒度的用户权限控制&#xff0c;确保用户数…...

NVR设备ONVIF接入平台EasyCVR视频分析设备平台视频质量诊断技术与能力

视频诊断技术是一种智能化的视频故障分析与预警系统&#xff0c;NVR设备ONVIF接入平台EasyCVR通过对前端设备传回的码流进行解码以及图像质量评估&#xff0c;对视频图像中存在的质量问题进行智能分析、判断和预警。这项技术在安防监控领域尤为重要&#xff0c;因为它能够确保监…...

系统思考—啤酒游戏经营决策沙盘

《第五项修炼&#xff1a;学习型组织建立》——系统思考的深层实践 越来越多的客户发现&#xff0c;系统思考不仅仅是一门课程&#xff0c;而是一种长期的实践。感谢合作伙伴对《第五项修炼》的支持&#xff0c;将其作为一个整体项目推荐。广东嘉荣超市在8月结束两天系统思考的…...

组件封装思路

组件封装的核心思路是&#xff1a;把可复用的结构只写一次&#xff0c;把可能发生变化的部分抽象成组件参数(props/插槽)。 如果是像纯文本&#xff0c;像是一些主标题和副标题&#xff0c;可以抽象成prop传入 如果主体内容是复杂的模版&#xff0c;有图片有列表等&#xff0c;…...

akshare股票涨跌停获取统计分析

参看&#xff1a; https://akshare.akfamily.xyz/data/stock/stock.html#id375 数据源来自东方财富网&#xff1a;https://quote.eastmoney.com/ztb/detail#typeztgc 参数说明 涨停统计&#xff1a; n/m代表m天中有n次涨停板 安装&#xff1a; pip install akshare -i http…...

前端对一个增删改查的思考

1、来源&#xff1a;dify dify/web/app/components/workflow/nodes/question-classifier/components/class-list.tsx at main langgenius/dify GitHub 2、代码流程&#xff1a; 3、思索问题&#xff1a; 1、为啥要用return形式&#xff0c;而不是value直接当函数&#xff1…...

【Clickhouse】客户端连接工具配置

ClickHouse 是什么 ClickHouse 是一个分布式实时分析型列式存储数据库。具备高性能&#xff0c;支撑PB级数据&#xff0c;提供实时分析&#xff0c;稳定可扩展等特性。适用于数据仓库、BI报表、监控系统、互联网用户行为分析、广告投放业务以及工业、物联网等分析和时序应用场…...

【测试平台】打包 jenkins配置和jenkinsfile文件

背景&#xff1a; 当打包机环境配置完成后&#xff0c;需要挂到master的jenkins中&#xff0c;完成调度。 jenkins启动 命令行直接启动即可。 nohup java -jar /usr/local/opt/jenkins/libexec/jenkins.war --httpListenAddress0.0.0.0 --httpPort80 appending output to n…...

Leetcode224 -- 基本计算器及其拓展

题目分析&#xff1a; 其实这个计算器的实现并不难&#xff0c;因为除了括号就剩下加减法嘛&#xff0c;括号肯定比加减法先执行&#xff0c;但是加减法是同级的&#xff0c;只是会改变数字的正负号而已&#xff0c;所以实现的逻辑并不是很难&#xff0c;我们只需要一个栈&…...

python的lambda实用技巧

lambda表达式 lambda表达式是一种简化的函数表现形式&#xff0c;也叫匿名函数&#xff0c;可以存在函数名也可以不存在。 使用一行代码就可以表示一个函数&#xff1a; # 格式 lambda arg[参数] : exp[表现形式] # 无参写法 lambda : "hello" # 一般写法 lambda …...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

flow_controllers

关键点&#xff1a; 流控制器类型&#xff1a; 同步&#xff08;Sync&#xff09;&#xff1a;发布操作会阻塞&#xff0c;直到数据被确认发送。异步&#xff08;Async&#xff09;&#xff1a;发布操作非阻塞&#xff0c;数据发送由后台线程处理。纯同步&#xff08;PureSync…...