当前位置: 首页 > 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 …...

VB中的资源文件(Resource File)及其用途

在Visual Basic&#xff08;VB&#xff09;中&#xff0c;资源文件&#xff08;Resource File&#xff09;是一种特殊的文件&#xff0c;用于存储应用程序中使用的非代码资源。这些资源可以是字符串、图像、图标、音频文件、视频文件等。资源文件的主要用途是使应用程序的管理和…...

【vue】11.Vue 3生命周期钩子在实践中的具体应用

Vue 3的生命周期钩子为开发者提供了在不同阶段操作组件的强大能力。本文将带您了解每个生命周期钩子的使用场景&#xff0c;并通过简单的案例来展示它们在实际开发中的应用。 1. 创建阶段&#xff08;Creation Hooks&#xff09; beforeCreate 进行一些初始化操作&#xff0c…...

1.5 新特性 C++面试常见问题

1.5.1 说说C11的新特性有哪些&#xff1f; C11 引入了许多重要的新特性和增强&#xff0c;目的是提升语言的性能、可读性和简洁性。以下是 C11 的一些主要新特性&#xff1a; 1. 自动类型推导 使用 auto 关键字&#xff0c;可以让编译器自动推导变量的类型。auto x 42; …...

[mysql]子查询的概述和分类及单行子查询

子查询引入 查询的基本结构已经给大家了,子查询里面也是有一些新的内容,子查询其实就是在查询中嵌套另一个查询,叫嵌套查询可能大家更容易理解一点..,类似与FOR循环和FOR循环的嵌套,这一章是我们查询的最难的部分,大家 难度是查询的顶峰,多表查询和子查询是非常重要,SQL优化里…...

SpringMVC执行流程(视图阶段JSP、前后端分离阶段)、面试题

目录 1.SpringMVC执行流程分为以下两种 2.非前后端分离的SpringMVC的执行流程 3.前后端分离的项目SpringMVC执行流程 4. 面试题 1.SpringMVC执行流程分为以下两种 2.非前后端分离的SpringMVC的执行流程 流程图&#xff1a; 更加生动的描述&#xff1a; DisPatcherServlet…...

宠物空气净化器有用吗?有哪几款吸毛效果好且低噪的推荐

伴随着天气越来越凉&#xff0c;照常来说&#xff0c;猫咪掉毛的频率应该会变少&#xff0c;但是为什么我家的猫咪还在掉很多毛。 现在就连南方地区都要加外套了&#xff0c;但是猫咪掉毛太多&#xff0c;都不敢穿纯棉面料的衣服&#xff0c;还有本来想着顺应天气的变化&#…...

linux -磁盘管理命令

学会用fidsk -l blkid lskid 就够用 格式化文件系统&#xff1a;mkfs -t <文件系统格式> /dev/vdb1 1..df -Th 查看磁盘挂载情况。 2.fdisk 磁盘分区命令 示例一&#xff1a;fdisk -l 查看磁盘分区&#xff0c;箭头指出分区信息 示例二&#xff1a;创建分区eg…...

[Chrome插件开发]关于报错Service worker registration failed. Status code: 15

manifest.json中不能使用ts&#xff1a; "background": {"service_worker": "background.ts"}只能使用js "background": {"service_worker": "background.js"}在vite.config.js中增加以下配置&#xff0c;可以将…...

uniapp封装movable-area+movable-view组件,实现悬浮按钮可拖动,自动吸附边缘效果,自动向两边靠拢

兼容H5、App、微信小程序 子组件 /components/ShopCar/ShopCar.vue <template><view class"ShopCar"><movable-area class"movableArea" v-if"isShow"><movable-view class"movableView" :position"posi…...

音频重采样(libresample)

https://github.com/minorninth/libresample USB audio同步问题及Jitter分析_usb mic i2s 时钟不同步-CSDN博客 是的&#xff0c;电脑和 USB 摄像头之间的 UAC&#xff08;USB Audio Class&#xff09;传输&#xff0c;**可能会因为两边时钟不同步而引起破音问题**。时钟不同…...

网站用户体验分析怎么做/网站关键词优化的步骤和过程

2023/4/6 QT练习QQ登录界面&#xff08;完善&#xff09; 作业 完善登录界面 点击登录按钮后&#xff0c;判断账号和密码是否一致&#xff0c;如果匹配失败&#xff0c;则弹出错误对话框&#xff0c;文本内容“账号密码不匹配&#xff0c;是否重新登录”&#xff0c;给定两个按…...

做电商网站/网络营销企业培训

在jar上设置/右键properties/Javadoc Location/Struts-2.3.12/docs下面找到对应的文档 转载于:https://www.cnblogs.com/SpringSmallGrass/archive/2013/04/05/3001715.html...

机房管理软件/泰州seo网站推广

从应用平台来看&#xff0c;根据笔者多年的经验&#xff0c;可以把回声消除分为两大类&#xff1a;基于DSP等实时平台的回声消除技术和基于Windows等非实时平台的回声消除技术。两者的技术难度和重点是不一样的。三、基于DSP平台的回声消除技术回声消除技术传统的应用领域是各种…...

天津做网站优化的公司/企业网站优化解决方案

mutation_data_tidy mutation_data_tidy PeRl 这次偶然课题需要用到突变相关数据&#xff0c;在这做一下简单的总结&#xff0c;抛砖引玉。 癌症相关数据最近都是从FIREHOSE上下载的&#xff0c;第一次发现突变数据并不是按照矩阵形式存储的&#xff0c;还需要自己整理清洗数据…...

郑州专业做淘宝直播网站/广州灰色优化网络公司

用rpm方式装的mysql&#xff0c;配置了下&#xff0c;mysqld_multi 启动什么都没问题。但是编译安装的mysql5.5.20,启动mysqld_multi 报错 。datadir 什么都是正确创建了的&#xff0c;但就是找不到。./mysqld_multi --defaults-file/etc/my.cnf start 3307 --no-log --user…...

工信部查网站备案/app下载推广

取(m堆)石子游戏 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1263 Accepted Submission(s): 754 Problem Descriptionm 堆石子,两人轮流取.只能在1堆中取.取完者胜.先取者负输出No.先取者胜输出Yes,然后输出…...