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

vue3.0 透传 Attribute

目录

效果一(子组件只有一个根节点,透传生效)

效果二(子组件有多个根节点,透传未生效,且控制台会抛出警告)

效果三(子节点如果不是单根节点的时候,可以通过添加:="$attrs"属性进行透传)

效果四(子节点是单根节点,但是不希望进行透传,inheritAttrs设置为false即不接收属性的透传)


透传是vue中一种特性,“透传 attribute”指的是传递给一个组件,却没有被该组件声明为 props 或 emits 的 attribute 或者 v-on 事件监听器。最常见的例子就是 class、style 和 id。


透传特性:

  • 透传的属性只会直接传给单根节点的组件,如果子组件有多个根节点,透传属性不会生效且控制台会抛出警告
  • 透传过去的属性ID获取需要在dom节点加载结束进行,否则获取不到
  • 透传属性命名和子组件上的重复,属性值不会生效

效果一(子组件只有一个根节点,透传生效)

子组件 son.vue

<template>
  <button class="btn-style">btn</button>
</template>

父组件 home.vue

<template>
  <son class="home-style"/>
</template>

<script>
import sonfrom '@/components/son.vue'

export default {
  name: 'HomeView',
  components: {
    son
  }
}
</script>

结果:

<button class="btn-style home-style">btn</button>


效果二(子组件有多个根节点,透传未生效,且控制台会抛出警告)

子组件 son.vue

<template>
  <button class="btn-style">btn1</button>
  <button class="btn-style">btn2</button>
</template>

父组件 home.vue

<template>
  <son class="home-style"/>
</template>

<script>
import sonfrom '@/components/son.vue'

export default {
  name: 'HomeView',
  components: {
    son
  }
}
</script>

结果:

<button class="btn-style">btn</button>

<button class="btn-style">btn</button>


效果三(子节点如果不是单根节点的时候,可以通过添加:="$attrs"属性进行透传)

子组件 son.vue

<template>
  <button class="btn-style">btn1</button>
  <button class="btn-style" :="$attrs">btn2</button>
</template>

 父组件 home.vue

<template>
  <son class="home-style"/>
</template>

<script>
import sonfrom '@/components/son.vue'

export default {
  name: 'HomeView',
  components: {
    son
  }
}
</script>

 结果:

<button class="btn-style">btn1</button>

<button class="btn-style home-style">btn2</button>


效果四(子节点是单根节点,但是不希望进行透传,inheritAttrs设置为false即不接收属性的透传)

子组件 son.vue

<template>
  <button class="btn-style">btn</button>
</template>


<script>
export default {
  inheritAttrs: false,
};
</script>

父组件 home.vue 

<template>
  <son class="home-style"/>
</template>

<script>
import sonfrom '@/components/son.vue'

export default {
  name: 'HomeView',
  components: {
    son
  }
}
</script>

结果:

 <button class="btn-style">btn</button>


http://www.kler.cn/a/15292.html

相关文章:

  • Web3浪潮下的区块链应用:从理论到实践的全面解析
  • Flutter在MaterialApp中的builder初始化多个包
  • 在 Spark RDD 中,sortBy 和 top 算子的各自适用场景
  • MySQL 怎么不丢数据(关于开启双1配置)
  • 抖音热门素材去哪找?优质抖音视频素材网站推荐!
  • MySQL 中的数据排序是怎么实现的
  • ChatGPT: 如何利用OpenAI的GPT-3.5构建智能对话助手
  • 1031. 两个非重叠子数组的最大和
  • 嵌入式Linux驱动开发(九)Linux中断
  • 十、ElasticSearch 实战 - 源码运行
  • 懂这3件事情,就能成功实施MES管理系统实现“数字化”工厂
  • 【Shell编程之循环语句与函数】
  • 换肤实现及LayoutInflater原理
  • Linux系统操作案例
  • DFS与BFS总结
  • 学成在线笔记+踩坑(9)——课程发布,xxl-job+消息SDK实现分布式事务、页面静态化、Hystrix熔断降级
  • 数据可视化开源工具软件
  • 一起Talk Android吧(第五百四十一回:ProgressBar总结)
  • C++原理高性能
  • ERP与CRM、MRP、PLM、APS、MES、WMS、SRM的关系
  • PMO和PM必备六大复盘方法工具汇总
  • MiNiGPT4安装记录
  • 黑盒测试过程中【测试方法】详解5-输入域,输出域,猜错法
  • ERTEC200P-2 PROFINET设备完全开发手册(4-1)
  • 解析Mybaits核心配置文件属性
  • 大数据 | 实验二:文档倒排索引算法实现