Vue3+Vite实现工程化,事件绑定以及修饰符

我们可以使用v-on来监听DOM事件,并在事件触发时执行对应的Vue的Javascript代码。

  • 用法:v-on:click = "handler" 或简写为 @click = "handler"
  • vue中的事件名=原生事件名去掉 on 前缀 如:onClick --> click
  • handler的值可以是方法事件处理器,也可以是内联事件处理器
  • 绑定事件时,可以通过一些绑定的修饰符,常见的事件修饰符如下

|--------------------------------|
| @click.once:只触发一次事件。重点 |
| @click.prevent:阻止默认事件。重点 |
| @click.stop:阻止事件冒泡 |
| @click.capture:使用事件捕获模式而不是冒泡模式 |
| @click.self:只在事件发送者自身触发时才触发事件 |

html 复制代码
<script setup>

    import {ref} from "vue";

    //响应式数据 当发生变化时,会自动更新 dom 树
    let count = ref(0);

    let addCount=()=>{
      count.value++;
    }

    let incrCount=(event)=>{
      count.value++;
      //通过事件对象阻止组件的默认行为
      event.preventDefault();
    }

    let sayHello=()=>{
      alert("hello world!")
    }

    let h01=()=>{
      alert("ho1")
    }
    let h02=()=>{
      alert("ho2")
      event.stopPropagation();    //阻止事件传播,繁殖,蔓延
    }
    let h03=()=>{
      alert("h03");
    }

</script>

<template>

    <div>
       <h1>count的值是:{{count}}</h1>

      <!--方法事件处理器-->
      <button v-on:click="addCount()">addCount</button><br>

      <!--内联事件处理器-->
      <button @click="count++">incrCount</button><br>

      <!--事件修饰符 once 只绑定事件一次-->
      <button @click.once="count++">addOnce</button><br>

      <!--事件修饰符 prevent 阻止组件的默认行为-->
      <a href="https://blog.csdn.net/m0_65152767?spm=1011.2124.3001.5343" target="_blank" @click.prevent="count++">prevent</a><br>

      <!--原是js方式阻止组件默认行为(推荐)-->
      <a href="https://blog.csdn.net/m0_65152767?spm=1010.2135.3001.5343" target="_blank" @click="incrCount($event)">prevent</a><br>

      <button v-on:click="sayHello">点我</button>

      <button @click="sayHello">点我省略v-on:</button>

      <div @click="h01" style="background-color: #abc;width: 200px;height: 200px">
        <div @click="h02" style="background-color: #cba;width: 100px;height: 100px">HELLO</div>
        <div @click.stop="h03" style="background-color: #dfb;width: 100px;height: 100px">HELLO</div>
      </div>
    </div>

</template>
相关推荐
To_OC4 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
To_OC5 小时前
LC 17 电话号码的字母组合:我的回溯算法,就是从这道题开窍的
javascript·算法·leetcode
vipbic5 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy5 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志5 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
invicinble6 小时前
c端系统,其实更像一个信息展示平台
前端
你怎么知道我是队长7 小时前
JavaScript的变量和数据类型介绍
开发语言·javascript·ecmascript
李姆斯7 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
名字还没想好☜8 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司8 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能