当前位置: 首页 > news >正文

【vue】v-bind=“$attrs“理解与使用

  •  前言:小编在这里说一下这个点的原因主要是为了小编讲其他二次封装组件时为什么要用到这个指令。
  • 什么是$attrs:它是 Vue 实例上的一个对象,包含了父组件传递给子组件的所有非props属性(即没有在props中声明的属性)。

组件实例 | Vue.js

  • 使用场景: v-bind="$attrs"当我们需要将父组件传递的属性自动绑定到子组件内部的某个元素上时使用。主要用于组件之间的隔代传值,在创建高阶组件或封装组件时非常有用可以完整的继承该组件的配置
  • 解释用个例子(二次封装已有的 element/antd 等组件,在 tsx 中我们使用接口 interface props 继承当前组件的属性方法;但是在 vue 中我们用的 js ,没法那么用;所以需要 v-bind="$attrs" 来为我们继承上,这样当我们使用针对原element/antd等组件再二次封装后,可以直接再封装后的组件使用 element/antd 这些组件的属性,不需要我们再传一次所有的属性方法,相对比较方便)
  • 简单示例:
<!-- ParentComponent.vue -->
<template>
  <ChildComponent data="1" id="child-id" type="info" />
</template>


<!-- ChildComponent.vue -->
<template>
  <div v-bind="$attrs">
    <!-- $attrs 中的内容会被绑定到这里 -->
    This is the child component.
  </div>
</template>

在这个例子中,data="1" id="child-id" type="info"会通过$attrs被绑定到ChildComponent的根div标签(如果我们用的el-input,也是同理)上,如此操作子组件ChildComponent就可以不用props再接一遍父组件ParentComponent传的属性了。

  • 注意:默认情况下,vue 会将 $attrs 中的属性自动绑定到组件的根元素上。如果你不希望这种行为,可以通过设置 inheritAttrs: false 来禁用它,然后手动使用 v-bind="$attrs" 来控制属性的绑定位置。
<script>
export default {
  // 禁用默认的属性继承行为
  inheritAttrs: false,
};
</script>

相关文章:

  • MPDrive:利用基于标记的提示学习提高自动驾驶的空间理解能力
  • 数据赋能——个人信息安全与大数据决策创新
  • 无法看到新安装的 JDK 17
  • ROS2_control 对机器人控制(不完整,有时间再更新)
  • 2025-04-08 NO.4 Quest3 交互教程
  • 算法(二十一)
  • nginx如何实现负载均衡?
  • 详解 Go 的常见环境变量及其在 zshrc 中的配置
  • ✅ Ultralytics YOLO 训练(Train)时实时获取 COCO 指标(AP):2025最新配置与代码详解 (小白友好 + B站视频)
  • 递归实现指数型枚举
  • 基于金字塔视觉变换的类引导网络高分辨率遥感图像高效语义分割
  • k8s 1.24.17版本部署(使用Flannel插件)
  • 数字人技术的核心:AI与动作捕捉的双引擎驱动(2/10)
  • C,C++,C#
  • 论文_基于联邦增量学习的SND环境下DDos攻击检测模型
  • Qt项目——记事本
  • 演员郑歌语正式加入创星演员出道计划,开启演艺新蓝图
  • DFS 蓝桥杯
  • 【C++算法】52.链表_两两交换链表中的节点
  • 分布式防护节点秒级切换:实战配置与自动化运维
  • 美凯龙:董事兼总经理车建兴被立案调查并留置
  • 中国人民抗日战争暨世界反法西斯战争胜利80周年纪念活动标识发布
  • 人民日报钟声:通过平等对话协商解决分歧的重要一步
  • 男子退机票被收票价90%的手续费,律师:虽然合规,但显失公平
  • “无锡景・江南韵”:中国评弹艺术在尼日利亚收获众多粉丝
  • 广西壮族自治区党委政法委副书记李文博接受审查调查