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

  • 相关阅读:
    ESP8266_01S+刷入AT固件+保姆级教学+USB验证AT指令
    LeetCode209长度最小子数组
    shell小练习2
    LeetCode 第 307 场周赛 复盘
    ELF文件格式
    回溯法就是学不会2 —— 括号生成问题
    第四章:控制结构
    String(一)———了解编码
    Kotlin进阶指南 - Parcelable序列化
    Redis命令和Redisson对象匹配列表
  • 原文地址:https://blog.csdn.net/m0_37890289/article/details/143321367