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

Vue修饰符全解析

目录

一、事件修饰符

二、按键修饰符

三、系统修饰键

四、表单修饰符

五、鼠标修饰符

六、特殊修饰符

七、自定义修饰符

使用建议


一、事件修饰符
<!-- 阻止冒泡 -->
<button @click.stop="handleClick">点击测试</button><!-- 阻止默认行为 -->
<form @submit.prevent="handleSubmit"></form><!-- 事件捕获模式 -->
<div @click.capture="captureHandler"></div><!-- 仅当event.target是元素自身时触发 -->
<div @click.self="selfHandler"></div><!-- 单次触发 -->
<button @click.once="onceHandler"></button><!-- 滚动事件的默认行为立即触发 -->
<div @scroll.passive="onScroll"></div>

注意:修饰符顺序影响执行顺序,例如:

  • @click.prevent.self 先阻止默认再判断元素
  • @click.self.prevent 先判断元素再阻止默认
二、按键修饰符
<!-- 回车键触发 -->
<input @keyup.enter="submit"><!-- 删除键触发 -->
<input @keyup.delete="clear"><!-- 方向键触发 -->
<input @keyup.left="moveLeft"><!-- 精确控制组合键 -->
<button @click.ctrl.exact="ctrlClick">仅按Ctrl时触发</button>

支持按键别名:

  • .enter
  • .tab
  • .delete
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right
三、系统修饰键
<!-- Ctrl + C 触发 -->
<input @keyup.ctrl.67="copy"><!-- Alt + Enter 触发 -->
<input @keyup.alt.enter="specialSubmit"><!-- Shift + 点击 -->
<div @click.shift="shiftClick"></div>

系统修饰键:

  • .ctrl
  • .alt
  • .shift
  • .meta (Windows对应⊞键,Mac对应⌘键)
四、表单修饰符
<!-- 延迟同步 -->
<input v-model.lazy="msg"><!-- 自动转为数字 -->
<input v-model.number="age"><!-- 去除首尾空格 -->
<input v-model.trim="username">

五、鼠标修饰符
<!-- 左键点击 -->
<div @mousedown.left="leftClick"></div><!-- 中键点击 -->
<div @click.middle="middleClick"></div><!-- 右键点击 -->
<div @contextmenu.right="rightMenu"></div>

六、特殊修饰符
<!-- 原生事件监听 -->
<component @click.native="nativeClick"></component><!-- 属性双向绑定(Vue2语法) -->
<ChildComponent :title.sync="pageTitle" />

七、自定义修饰符
// 全局自定义修饰符
app.config.globalProperties.$customModifier = (el, binding) => {// 自定义处理逻辑
}

使用建议
  1. 组合修饰符时注意执行顺序:
<!-- 先阻止默认再停止冒泡 -->
<form @submit.prevent.stop></form>

  1. 性能优化建议:
  • 滚动事件建议配合.passive
  • 频繁触发事件使用.lazy.throttle
  1. 调试技巧:
<!-- 查看事件对象 -->
<button @click.shift.alt="(e) => console.log(e)">调试</button>

通过合理使用修饰符,可以显著提升代码简洁性和事件处理效率。建议根据实际场景选择最合适的修饰符组合。

http://www.lryc.cn/news/2387156.html

相关文章:

  • OpenCV CUDA 模块图像过滤-----创建一个计算图像导数的滤波器函数createDerivFilter()
  • 计算机视觉与深度学习 | Python实现CEEMDAN-ABC-VMD-DBO-CNN-LSTM时间序列预测(完整源码和数据)
  • AWS関連職種向け:日本語面接QA集
  • 【Macos】安装前端环境rust+node环境
  • (01)华为GaussDB((基于PostgreSQL))高斯数据库使用记录,dbeaver客户端配置高斯驱动,连接高斯数据库
  • ARM Linux远程调试
  • day24Node-node的Web框架Express
  • Webpack和Vite构建工具有什么区别?各自的优缺点是什么
  • 让MySQL更快:EXPLAIN语句详尽解析
  • 基于谷歌浏览器的Web Crypto API生成一对2048位的RSA密钥(公钥+私钥),并以JSON格式(JWK)打印到浏览器控制台
  • [CSS3]rem移动适配
  • 向量数据库及ChromaDB的使用
  • CodeBuddy实现pdf批量加密
  • 编程中优秀大模型推荐:特点与应用场景深度分析
  • orm详解--查询执行
  • 运行打印Hello World启动了多少线程?
  • C++项目中调用C#DLL的的方式
  • 咳嗽止咳药笔记250526 , 磷酸苯丙哌林 , 喷托维林 , 右美沙芬
  • vue pinia 独立维护,仓库统一导出
  • 网络的协议和标准
  • 十六进制字符转十进制算法
  • 跟Gemini学做PPT:汇报背景图寻找指南
  • java交易所,多语言,外汇,黄金,区块链,dapp类型的,支持授权,划转,挖矿(源码下载)
  • (已开源-CVPR2024) RadarDistill---NuScenes数据集Radar检测第一名
  • 【MySQL】 数据库基础数据类型
  • 中小企业AI算力如何选?【显卡租赁】VS【自建服务器】
  • OpenHarmony 4.1版本应用升级到5.0版本问题记录及解决方案
  • std::initialzer_list 与花括号{}数据列表
  • 萤石云实际视频实时接入(生产环境)
  • QT中常用的类