当前位置:  首页>> 技术小册>> Vue面试指南

Vue常用的修饰符有以下几种:

  • .prevent:阻止默认事件;
  • .stop:阻止事件冒泡;
  • .capture:添加事件监听器时使用事件捕获模式;
  • .self:只有当事件是从事件源自身触发时才触发事件;
  • .once:只触发一次;
  • .passive:指示浏览器不要执行默认的滚动行为(提高性能)。
    修饰符的应用场景有很多,下面展示几个常见的示例:

.prevent 阻止默认事件:

  1. <template>
  2. <form @submit.prevent="submitForm">
  3. <input type="text" v-model="name" />
  4. <button type="submit">Submit</button>
  5. </form>
  6. </template>
  7. <script>
  8. export default {
  9. data() {
  10. return {
  11. name: "",
  12. };
  13. },
  14. methods: {
  15. submitForm() {
  16. // 处理表单提交逻辑
  17. },
  18. },
  19. };
  20. </script>

在上面的代码中,当用户提交表单时,页面不会重新加载,而是调用 submitForm 方法处理表单提交逻辑。

.stop 阻止事件冒泡:

  1. <template>
  2. <div @click="outer">
  3. <div @click.stop="inner">Inner Div</div>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. methods: {
  9. outer() {
  10. console.log("Outer Div clicked");
  11. },
  12. inner() {
  13. console.log("Inner Div clicked");
  14. },
  15. },
  16. };
  17. </script>

在上面的代码中,当用户点击 Inner Div 时,只会触发 inner 方法,不会触发 outer 方法。

.once 只触发一次:

  1. <template>
  2. <button @click.once="doSomething">Click Me</button>
  3. </template>
  4. <script>
  5. export default {
  6. methods: {
  7. doSomething() {
  8. console.log("Button clicked");
  9. },
  10. },
  11. };
  12. </script>

在上面的代码中,当用户点击按钮时,只会触发 doSomething 方法一次。

.self 只有当事件是从事件源自身触发时才触发事件:

  1. <template>
  2. <div @click.self="doSomething">
  3. <button>Click Me</button>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. methods: {
  9. doSomething() {
  10. console.log("Div clicked");
  11. },
  12. },
  13. };
  14. </script>

在上面的代码中,当用户点击按钮时,不会触发 doSomething 方法,只有当用户点击 div 元素时才会触发。

.passive 指示浏览器不要执行默认的滚动行为(提高性能):

  1. <template>
  2. <div @scroll.passive="doSomething">
  3. <!-- 大量内容 -->
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. methods: {
  9. doSomething() {
  10. console.log("Div scrolled");
  11. },
  12. },
  13. };
  14. </script>

该分类下的相关小册推荐: