vue事假机制都有哪些

Vue 的事件机制主要包含以下几种类型和方式,可以分为组件内部事件、父子组件通信事件、原生 DOM 事件封装、修饰符增强等,下面详细分类介绍:


一、DOM 事件绑定(最基础的事件)

使用 v-on(或简写 @)指令绑定原生 DOM 事件。

<button @click="handleClick">点击我</button>

二、自定义事件(组件通信)

1. 子组件通过 $emit 向父组件传递事件

子组件中:

<template><button @click="$emit('custom-event', data)">发送事件</button>
</template>

父组件中:

<ChildComponent @custom-event="handleCustomEvent" />

2. 使用 v-model 进行双向绑定(语法糖)

Vue3 中可以绑定自定义 modelValueupdate:modelValue

子组件:

<template><input :value="modelValue" @input="$emit('update:modelValue', $event.target.value)" />
</template>
<script>
export default {props: ['modelValue']
}
</script>

父组件:

<ChildComponent v-model="inputValue" />

三、事件修饰符

Vue 为事件添加了很多修饰符,用于增强行为:

  • .stop:阻止事件冒泡

  • .prevent:阻止默认行为

  • .capture:使用事件捕获模式

  • .self:只有事件是从绑定元素本身触发才触发

  • .once:事件只触发一次

  • .passive:使用被动监听器,适合滚动性能优化

<button @click.stop.prevent="handleClick">点我</button>

四、键盘事件修饰符

<input @keyup.enter="submit" />

还支持 .esc, .tab, .delete, .arrow-up, .space 等等。


五、事件代理(原生方式)

在 Vue 中仍然可以使用事件代理:

<ul @click="handleListClick"><li v-for="item in list" :key="item.id" :data-id="item.id">{{ item.name }}</li>
</ul>

六、$on / $off / $emit(Vue2 中的全局事件总线)

Vue2 可以通过事件总线实现跨组件通信:

// event-bus.js
export const EventBus = new Vue();// 发送事件
EventBus.$emit('someEvent', data);// 接收事件
EventBus.$on('someEvent', data => { ... });// 移除事件
EventBus.$off('someEvent');

⚠️ Vue3 中已经废弃 $on / $off / $emit,推荐使用 mittemitter 等库替代。


七、Vue3 中的事件通信方式

Vue3 推荐使用以下方式进行事件通信:

  • defineEmits()(组合式 API)

  • mitt 第三方事件库

  • provide/inject

  • PiniaVuex 状态管理

  • emits 选项配合 defineProps

// 子组件
const emit = defineEmits(['save']);
emit('save', payload);

八、自定义指令事件

Vue 允许你通过自定义指令实现特殊事件处理逻辑:

app.directive('click-outside', {mounted(el, binding) {document.addEventListener('click', (e) => {if (!el.contains(e.target)) {binding.value(e)}});}
});

需要我帮你整理一个“Vue 事件机制脑图”或“快速参考表”吗?

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

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

相关文章

系统编程2(消息队列)

⦁ 消息队列概念 Linux系统中消息队列&#xff08;Message Queue&#xff09;是进程间通信的一种方式&#xff0c;这种通信机制的好处是可以传输指定类型(用户可以自行定义)的数据&#xff0c;相同类型的数据根据到达顺序在队列中进行排队。 当然&#xff0c;不同类型的数据不…

Pytorch深度学习框架60天进阶学习计划 - 第41天:生成对抗网络进阶(二)

Pytorch深度学习框架60天进阶学习计划 - 第41天&#xff1a;生成对抗网络进阶&#xff08;二&#xff09; 7. 实现条件WGAN-GP # 训练条件WGAN-GP def train_conditional_wgan_gp():# 用于记录损失d_losses []g_losses []# 用于记录生成样本的多样性&#xff08;通过类别分…

python 微博爬虫 01

起因&#xff0c; 目的: ✅下载单个视频&#xff0c;完成。✅ 获取某用户的视频列表&#xff0c;完成。剩下的就是&#xff0c; 根据视频列表&#xff0c;逐个下载视频&#xff0c;我没做&#xff0c;没意思。获取视频的评论&#xff0c;以后再说。 关键点记录: 1. 对一个视…

Servlet、HTTP与Spring Boot Web全面解析与整合指南

目录 第一部分&#xff1a;HTTP协议与Servlet基础 1. HTTP协议核心知识 2. Servlet核心机制 第二部分&#xff1a;Spring Boot Web深度整合 1. Spring Boot Web架构 2. 创建Spring Boot Web应用 3. 控制器开发实践 4. 请求与响应处理 第三部分&#xff1a;高级特性与最…

vue中根据html动态渲染内容2.0

上次使用的是p标签用的contenteditable代替的可编辑的input&#xff0c;最后实现还是选择了用el-input的textarea方式。 一开始考虑的是需要根据用户输入自动撑开输入框&#xff0c;所以选择了p标签可编辑。 最后发现还是el-input会更好一点&#xff0c;只不过需要处理输入框撑…

CentOS 系统磁盘扩容并挂载到根目录(/)的详细步骤

在使用 CentOS 系统时&#xff0c;经常会遇到需要扩展磁盘空间的情况。例如&#xff0c;当虚拟机的磁盘空间不足时&#xff0c;可以通过增加磁盘容量并将其挂载到根目录&#xff08;/&#xff09;来解决。以下是一个完整的操作流程&#xff0c;详细介绍了如何将新增的 10G 磁盘…

LINUX基础 [二] - Linux常见指令

目录 &#x1f4bb;前言 &#x1f4bb;指令 &#x1f3ae;ls指令 &#x1f3ae;pwd指令 &#x1f3ae;whoami指令 &#x1f3ae;cd指令 &#x1f3ae;clear指令 &#x1f3ae;touch指令 &#x1f3ae;mkdir指令 &#x1f3ae;rmdir指令 &#x1f3ae;rm指令 &#…

基于php的成绩分析和预警与预测网站(源码+lw+部署文档+讲解),源码可白嫖!

摘要 人类现已迈入二十一世纪&#xff0c;科学技术日新月异&#xff0c;经济、资讯等各方面都有了非常大的进步&#xff0c;尤其是资讯与网络技术的飞速发展&#xff0c;对政治、经济、军事、文化、教育等各方面都有了极大的影响。 利用电脑网络的这些便利&#xff0c;发展一套…

《从底层逻辑剖析:分布式软总线与传统计算机硬件总线的深度对话》

在科技飞速发展的当下&#xff0c;我们正见证着计算机技术领域的深刻变革。计算机总线作为信息传输的关键枢纽&#xff0c;其发展历程承载着技术演进的脉络。从传统计算机硬件总线到如今备受瞩目的分布式软总线&#xff0c;每一次的变革都为计算机系统性能与应用拓展带来了质的…

Spring Boot 3.5新特性解析:自动配置再升级,微服务开发更高效

&#x1f4dd; 摘要 Spring Boot 3.5作为Spring生态的最新版本&#xff0c;带来了多项令人振奋的改进。本文将深入解析其中最核心的自动配置增强特性&#xff0c;以及它们如何显著提升微服务开发效率。通过详细的代码示例和通俗易懂的讲解&#xff0c;您将全面了解这些新特性在…

【前端】webpack一本通

今日更新完毕&#xff0c;不定期补充&#xff0c;建议关注收藏点赞。 目录 简介Loader和Plugin的不同&#xff1f;&#xff08;必会&#xff09; 使用webpack默认只能处理js文件 ->引入加载器对JS语法降级&#xff0c;兼容低版本语法合并文件再次打包进阶 工作原理Webpack 的…

leetcode 264. Ugly Number II

动态规划解决。 关键是理解如何生成新的丑数。这道题和经典的斐波那契数列问题其实是一样的。求第n个数&#xff0c;需要用第n个数前面的数来求。不同的是&#xff0c;斐波那契数列不会重复。而本题的丑数&#xff0c;会重复出现。 class Solution { public:int nthUglyNumbe…

深入理解 HTML5 语义元素:提升网页结构与可访问性

引言 在构建网页的过程中&#xff0c;合理的结构与清晰的语义对于网页的质量、可维护性以及搜索引擎优化&#xff08;SEO&#xff09;都至关重要。HTML5 引入了一系列语义元素&#xff0c;为开发者提供了更精准描述网页内容的工具。本文将深入探讨 HTML5 语义元素的作用、使用…

PyCharm显示主菜单和工具栏

显示主菜单 新版 PyCharm 是不显示主菜单的&#xff0c;要想显示主菜单和工具栏&#xff0c;则通过 “视图” → “外观” &#xff0c;勾选 “在单独的工具栏中显示主菜单” 和 “工具栏” 即可。 设置工具栏 此时工具栏里并没有什么工具&#xff0c;因此我们需要自定义工具…

CyclicBarrier 基本用法

CyclicBarrier 基本用法 简介 CyclicBarrier 是 Java 并发包&#xff08;java.util.concurrent&#xff09;中的一个同步辅助类。它允许一组线程相互等待&#xff0c;直到到达某个公共屏障点&#xff08;common barrier point&#xff09;。只有当所有参与的线程都到达屏障点…

[特殊字符] 手机连接车机热点并使用 `iperf3` 测试网络性能

好的&#xff0c;以下是根据你的描述整理出来的步骤及解释&#xff1a; &#x1f4f6; 手机连接车机热点并使用 iperf3 测试网络性能 本文将通过 iperf3 来测试手机和车机之间的网络连接性能。我们会让车机作为服务端&#xff0c;手机作为客户端&#xff0c;进行 UDP 流量传输…

FPGA上实现SD卡连续多块读的命令

在FPGA上实现SD卡连续多块读的命令 CMD17命令一次只能读取1个块 CMD18命令一次可以连续读取多个块&#xff0c;直到停止命令CMD12 CMD18命令读的块数程序可任意设置 目录 前言 一、SD卡多块读命令CMD18 二、停止读命令CMD12 三、SD卡初始化SD卡连续块读操作的verilog代码 …

DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

NSGA-II 多目标优化 —— 理论、案例与交互式 GUI 实现

目录 NSGA-II 多目标优化 —— 理论、案例与交互式 GUI 实现一、引言二、NSGA-II 基本原理2.1 非支配排序2.2 拥挤距离2.3 算法流程三、数学模型与算法推导3.1 多目标优化问题描述3.2 非支配关系与排序3.3 拥挤距离计算四、NSGA-II 的优缺点4.1 优点4.2 缺点五、典型案例分析5.…

库学习04——numpy

一、基本属性 二、 创建数组 &#xff08;一&#xff09;arange a np.arange(10,20,2) # [10,12,14,16,18] 只有一个参数n的话&#xff0c;默认是从0到n-1的一维数组。 &#xff08;二&#xff09;自定义reshape a np.arange(12).reshape((3,4)) [[ 0 1 2 3][ 4 5 …