vue实现属性透传 v-bind="$attrs"

1.官方定义
包含了父作用域中不作为 prop 被识别 (且获取) 的 attribute 绑定 (class 和 style 除外)。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class 和 style 除外),并且可以通过 v-bind="$attrs" 传入内部组件——在创建高级别的组件时非常有用。
我们可以简单理解为调用一个组件的时候传入属性 (class 和 style 除外),而且不在该组件内部的 props 中声明,就可以使用 v-bind="attrs"传入属性

2.应用场景
很多时候,我们需要对UI组件进行二次封装,这里以element ui为例,比如我们要封装一个date组件,在大多数场景下,我们需要设置属性placeholder、clearable等等

通过 props 传值进来,当然这样太过繁琐
<template>
<!-- 子组件 -->
  <div>
  <el-date-picker v-model="value" type="date"  :placeholder="placeholder"
      :clearable="clearable">
    </el-date-picker>
  </div>
</template>
通过 v-bind="$attrs" 进行透传
<template>
<!-- 子组件 -->
  <div>
  <el-date-picker v-bind="$attrs"  v-model="value" type="date" >
    </el-date-picker>
  </div>
</template>
<script>
export default {
  name: 'Date'
}
</script>
<!-- 父组件 -->
<Date placeholder="请输入日期"
        :clearable="true"/> 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 场景 很多时候,我们基于一些 UI 框架进行二次封装,这里以 Element UI 为例,封装一个 Input 组...
    Gopal阅读 7,001评论 2 9
  • 通过 v-bind="$props" 以及v-bind="$attrs" 实现属性透传 很多时候,我们会写一些嵌套...
    HTAO濤阅读 3,940评论 0 1
  • vm.$data 类型:Object 详细: Vue 实例观察的数据对象。Vue 实例代理了对其 data 对象属...
    JK丶帝阅读 320评论 0 0
  • vm.$data 类型:Object【对象】详细:Vue 实例观察的数据对象。Vue 实例代理了对其 data 对...
    Ishmael丶Yoko阅读 2,709评论 0 6
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 5,902评论 0 5

友情链接更多精彩内容