news 2026/5/23 7:53:19

Vue 3 事件透传机制详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue 3 事件透传机制详解

Vue 3 事件透传机制详解

1. 基础概念

  • 事件处理器的本质:在 Vue 中,@close="handler"实际上会被编译为一个名为onClose的 prop,其值为对应的函数。
  • 透传规则:组件上绑定的、但未在defineProps中声明的属性(包括普通属性和事件监听器),会自动传递给组件的根元素
  • 引用保持不变:在透传过程中,函数的引用始终是同一个,不会重新创建。

2. 透传工作原理

可以将其理解为“属性/事件的自动继承”。

2.1 传递过程

当一个属性或事件监听器从父组件传递给子组件时:

  1. 子组件检查自身props是否声明了该属性。
  2. 如果未声明,则该属性会被放入子组件的$attrs对象中。
  3. 如果子组件是单根元素,Vue 会自动将这些$attrs绑定到该根元素上。如果是多根节点组件,则不会自动绑定,需要手动处理。
  4. 该过程可以逐层向下进行,直到被某个组件显式接收或绑定到最终的元素上。

2.2 事件执行机制

  • 直接调用:当底层元素触发事件(如click)时,它实际上调用的是透传下来的、来自最外层组件的那个原始函数。
  • 上下文正确:函数执行时,this指向定义它的原始组件实例。

3. 透传内容的类型

  • 普通 HTML 属性:如idclassdata-*style等。
  • 事件监听器:以on开头的属性,如onClickonClose

4. 如何控制透传?(防护与定制)

有时我们不希望所有属性都自动透传。

4.1 显式声明为 Prop

在子组件中使用defineProps声明属性,即可阻止其继续向下透传。

javascript

体验AI代码助手

代码解读

复制代码

const props = defineProps({ onClose: Function, // 声明后,onClose 将不再进入 $attrs })

4.2 完全禁用自动透传

设置inheritAttrs: false,Vue 将不再自动将$attrs绑定到根元素。

php

体验AI代码助手

代码解读

复制代码

defineOptions({ inheritAttrs: false })

4.3 手动控制绑定位置

禁用自动透传后,可以使用v-bind="$attrs"将属性精确绑定到任意元素上,实现更灵活的传递。

xml

体验AI代码助手

代码解读

复制代码

<template> <div class="wrapper"> <!-- 将透传属性只绑定到内部某个元素 --> <button v-bind="$attrs">点击我</button> </div> </template>

原文:https://juejin.cn/post/7598767580306309174

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 20:39:52

【毕业设计】基于springboot的公园综合服务系统设计与实现小程序(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/23 3:34:06

Java毕设项目:基于springboot的公园综合服务系统设计与实现小程序(源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/22 13:38:53

2026年度深度盘点原创音乐人常备的5款AI编曲软件

在当今数字化浪潮席卷的音乐领域&#xff0c;AI编曲软件正逐渐成为原创音乐人手中的得力工具。它们以强大的技术能力&#xff0c;为音乐创作带来了前所未有的便捷与创新。这些软件能够快速生成旋律、编排和声、创作歌词&#xff0c;甚至模拟各种乐器音色和演唱风格&#xff0c;…

作者头像 李华
网站建设 2026/5/21 1:35:01

【MyCat】第6章----HA 机制的 Mycat 高可用

文章目录6.1 高可用方案6.2 安装配置 HAProxy1、 安装 HAProxy2、 启动验证6.3 配置 Keepalived1、 安装 Keepalived2、 启动验证6.4 测试高可用1、 测试步骤在实际项目中&#xff0c;Mycat 服务也需要考虑高可用性&#xff0c;如果 Mycat 所在服务器出现宕机&#xff0c;或 My…

作者头像 李华
网站建设 2026/5/22 5:01:31

【MyCat】第7章---- Mycat 安全设置

文章目录7.1 权限配置1、 user 标签权限控制7.2 SQL 拦截1、 白名单2、 黑名单7.1 权限配置 1、 user 标签权限控制 目前 Mycat 对于中间件的连接控制并没有做太复杂的控制&#xff0c;目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml 的 user 标签进行配置。 …

作者头像 李华