Vue的学习 —— <vue事件处理>

前言

事件指的就是用户和网页交互的行为,这些行为,包括:鼠标单击、鼠标双击、键盘按下、抬起等。为了简化开发,Vue为开发者提供了事件修饰符,它可以与v-on配合使用,以便于对事件进行控制和处理,让开发者更专注于逻辑。事件修饰符用于修饰事件的行为,写在事件名称之后,多个事件修饰符可以串联使用。

事件修饰符

Vue3中的事件修饰符,如 .prevent.stop.once

以下是事件修饰符可以实现的一些功能:

  • 阻止默认事件行为

  • 阻止事件冒泡

  • 事件捕获

  • 使事件只触发一次

  • 使DOM元素只有自身触发事件时才执行事件方法

  • 监听滚动事件

  • 捕获特定按键

  • 捕获鼠标按键

正文

一、阻止默认事件行为

通过.prevent事件修饰符可以实现阻止默认事件行为的功能。例如,在单击<a>标签时页面会自动跳转,这就是<a>标签的默认事件行为。在实际开发中,如果默认事件行为与事件发生冲突,可以使用.prevent事件修饰符阻止默认事件行为,示例代码如下:

<a href="test.html" v-on:click.prevent>阻止默认行为</a>

二、阻止事件冒泡

通过.stop事件修饰符可以实现阻止事件冒泡的功能,示例代码如下:

<template><div v-on:click="show('我是父元素的事件')"><button v-on:click="show('我是子元素的事件')">事件冒泡</button><button v-on:click.stop="show('我是子元素的事件')">阻止事件冒泡</button> <!-- --></div>
</template>
<script setup>
let show = message => console.log(message) 
</script>

三、事件捕获

通过.capture事件修饰符可以实现事件捕获的功能,示例代码如下:

<template><div v-on:click.capture="show('我是父元素的事件')"><button v-on:click="show('我是子元素的事件')">事件捕获</button></div>
</template>
<script setup>
let show = message =>  console.log(message)
</script>

四、使事件只触发一次

通过.once事件修饰符可以实现使事件只触发一次的功能。.once事件修饰符用于阻止事件的多次触发,让事件只触发一次,示例代码如下:

<template><button v-on:click.once ="show('我是当前元素的单击事件且只执行一次')">只执行一次</button>
</template>
<script setup>
let show = message => console.log(message)
</script>

五、使DOM元素只有自身触发事件时才执行事件方法

通过.self事件修饰符可以实现只有DOM元素自身触发事件时才执行事件方法的功能,示例代码如下:

<template><div v-on:click="show('我是祖先元素的事件')">祖先元素<div v-on:click.self="show('我是父元素的事件')">父元素<div v-on:click="show('我是子元素的事件')">子元素</div></div></div>
</template>
<script setup>
let show = message => console.log(message)
</script>

六、监听滚动事件

通过.passive事件修饰符可以实现监听滚动事件的功能。.passive事件修饰符主要用于优化移动端设备的滚屏性能。添加.passive事件修饰符后会优先响应滚动事件而不是滚动事件的回调函数,从而可提升性能。使用.passive事件修饰符的示例代码如下:

<div v-on:scroll.passive="onScroll"></div>

七、捕获特定按键

vue提供了一些用于修饰键盘事件的修饰符,使用它们可以捕获特定按键,其中常用的修饰符如下。

  • .enter:捕获Enter键。

  • .esc:捕获Esc键。

  • .tab:捕获Tab键。

  • .delete:捕获Delete和Backspace键。

  • .ctrl:捕获Ctrl键。

  • .alt:捕获Alt键。

  • .shift:捕获Shift键

  • .meta:在MacOS系统的键盘上捕获command键;在Windows系统的键盘上捕获Windows徽标键。

如果想实现只有按下Enter键时才能触发事件,可以通过.exact修饰符来实现,该修饰符允许控制由精确的系统修饰符组合触发的事件。修改input元素实现仅有Enter键被按下的时候才触发,示例代码如下:

<input type="text" v-on:keyup.enter.exact="submit">

八、捕获鼠标按键

Vue中提供了一些用于捕获鼠标按键的事件修饰符,其中常用的修饰符如下。

  • .left:捕获鼠标左键。

  • .middle:捕获鼠标中键。

  • .right:捕获鼠标右键。

接下来以捕获鼠标左键为例,演示鼠标按键修饰符的使用,示例代码如下:

<template><button v-on:click.left="show('捕获到鼠标左键')">按钮</button>
</template>
<script setup>
let show = message => console.log(message)
</script>

九、事件对象

事件对象是用来获取当事件发生时,事件源的一些信息(状态),例如,当鼠标移动事件发生时,想获得鼠标的坐标等,就通过事件对象来获得。在Vue中当事件发生时,会自动给事件处理函数传递一个$event事件对象,不需要手动传递,只需要接收即可。

下面演示捕获鼠标移动事件并输出相关信息,示例代码如下:

<!-- Home.vue文件 -->
<template><div class="home-container"><h3 @mousemove="move">Home组件</h3></div>
</template>
<script setup>
const move = (event) => {console.log(event)
}
</script>

将鼠标移动到Home组件div中,页面效果如下:

课后作业

在页面中设计一个交互场景,其中包含一个初始化值为0的计数器变量 count 以及一个可操作的按钮组件。当用户鼠标右键点击该按钮时,要求页面上的 count 变量能够自动递增1,并实时更新显示在页面上,以此来展现Vue.js响应式系统中的数据驱动视图更新特性。

参考实现:

<template><div>{{ count }}<button name="加1" @click.right="addCount"></button></div>
</template>
<style>
</style>
<script setup>
import {ref} from 'vue'
const count = ref(0)
const addCount = () => count.value += 1
</script>

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/702413.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【回眸】git VS repo 区别

git VS repo 区别 1. git&#xff1a;Git是一个开源的分布式版本控制系统&#xff0c;用以有效、高速的处理从很小到非常大的项目版本管理。 2. Repo: Repo是谷歌用Python脚本写的调用git的一个脚本,Repo实现管理多个git库。 Git 常用命令 1. git init&#xff1a;在当前目…

QT部分学习笔记

文章目录 1.前言注意问题2.学习历程2.0 创建项目 快捷键&#xff1a;2.1 创建按钮2.2 对象树2.3 调试输出2.4 QT坐标系2.5 信号和槽 3.Qmainwindow3.1 窗口菜单栏创建3.2 工具栏3.3 状态栏3.4 铆接部件3.5 对话框 4. 1.前言 版本&#xff1a; 5.9.9 注意问题 Qstring类型通多…

Nginx配置到系统中

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 Nginx(“engine x”…

【C语言每日题解】三题:回文检查、刘备 关羽 张飞三人过年放鞭炮、约瑟夫环问题(犹太人死亡游戏)(难度up,推荐)

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ &#x1f308;感谢大家的阅读、点赞、收藏和关注 &#x1f970;希望大家喜欢我本次的讲解 &#x1f31f;非常推荐最后一道题 &#x1f339; 犹太人死亡游戏&#xff0c;建议观看 &…

一文全解聚碳酸酯PC材料在汽车灯罩制造中的诸多显著优势!汽车车灯的灯罩如果破损破裂破洞了要怎么修复?

聚碳酸酯PC材料在汽车灯罩制造中具有诸多显著优势。除了优异的抗冲击性、透明性、耐热性和稳定性外&#xff0c;还有以下一些重要优势&#xff1a; 出色的光学性能&#xff1a;PC材料的光学性能优异&#xff0c;能够确保灯罩内的光源均匀分布&#xff0c;减少光斑和眩光&#…

C++的数据结构(八):线段树

线段树是一种高效的树形数据结构&#xff0c;用于处理区间查询和区间更新问题。它的基本思想是将一个大的区间分解为若干个小的、不相交的区间&#xff0c;每个小区间对应线段树中的一个节点。线段树的每个节点保存了该区间的信息&#xff08;如区间最大值、区间和等&#xff0…

尝试使用官方jailhouse-images仓库运行jailhouse

jailhouse 的官方 demo 演示仓库 Demo and testing images: https://github.com/siemens/jailhouse-images 通过jailhouse 的官方 demo 演示仓库&#xff0c;可以直接编译出带有部署有jailhouse程序的Linux镜像&#xff0c;有多个目标平台的Linux镜像可选&#xff0c;也有在qe…

C语言实训项目源码-02餐厅饭卡管理系统-C语言实训C语言大作业小项目

C语言餐厅饭卡管理系统 一、主要功能 主要功能模块 页面名称 实现功能 负责人 进入页面 进入程序 主函数 系统主要功能 修改密码函数 修改密码 充值&#xff0c;显示函数 饭卡充值与信息显示 购买饭菜…

SpringBoot:缓存

点击查看SpringBoot缓存demo&#xff1a;LearnSpringBoot09Cache-Redis 技术摘要 注解版的 mybatisCacheConfigCacheableCachePut&#xff1a;既调用方法&#xff0c;又更新缓存数据&#xff1b;同步更新缓存CacheEvict&#xff1a;缓存清除Caching&#xff1a;定义复杂的缓存…

Python-VBA函数之旅-vars函数

目录 一、vars函数的常见应用场景 二、vars函数使用注意事项 三、如何用好vars函数&#xff1f; 1、vars函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a;https://myelsa1024.blog.csdn.net/ 一、vars函数…

业务系统加固和安全设备加固

业务系统加固 业务系统包含哪些系统? 业务系统漏洞面临的风险 1web风险 2漏洞扫描&#xff0c;端口扫描 3系统漏洞 4逻辑漏洞 5 信息泄露 6拒绝服务 7口令爆破 加固方式&#xff1a; 在风险加上修复 1web漏洞&#xff1a; 包括csrf,xss&#xff0c;口令破解等等 修…

走进Java接口测试之多数据源切换示例

文章目录 一、前言二、demo实现2.1、开发环境2.2、构建项目2.3、配置数据源2.4、编写配置文件2.5、编写Dao层的mapper2.6、编写实体成层2.7、编写测试类2.8、验证结果 三、多数据源 demo 实现3.1、配置数据源3.2、增加pom文件3.3、修改数据源读取方式&#xff1a;3.4、增加动态…