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

vue(透传属性,$attrs)

官方文档

https://cn.vuejs.org/guide/components/attrs.html

案例

<FirstLevel class="attr-test-class" name="zs" age="18"></FirstLevel>

FirstLevel组件没有用props去申明name和age,所以这两个属性会透视传递。

<template>
  <div class="firstLevel"></div>
</template>
<script>
import SecondLvel from "@/components/SecondLvel";
export default {
  inheritAttrs : true,
  name: "FirstLevel",
  components: {SecondLvel},
  mounted() {
    console.log(this.$attrs, "FirstLevel Attrs")
  }
}
</script>

运行结果:
在这里插入图片描述
样式名称(attr-test-class)也会作为透视属性进行传递,需要注意的class只会传递到根元素上:
在这里插入图片描述
同时自动给继承也是继承到根元素上,当inheritAttrs : true时:
在这里插入图片描述
可以看到根元素直接继承了这两个属性,如果我们把这个参数变为false:
在这里插入图片描述
可以看到根元素就不会有两个属性了,但是无论这个参数是true还是false我们都可以通过$attrs来访问透视传递的属性。

同时如果我们想要继续传递给下一层组件:

<template>
  <div class="firstLevel">
    <p>第一层组件</p>
    <SecondLvel v-bind="$attrs"></SecondLvel>
  </div>
</template>
<script>
import SecondLvel from "@/components/SecondLvel";
export default {
  inheritAttrs : false,
  name: "FirstLevel",
  components: {SecondLvel},
  mounted() {
    console.log(this.$attrs, "FirstLevel Attrs")
  }
}
</script>
<template>
  <div>
    <p>第二层组件</p>
    <ThirdLevel v-bind="$attrs"></ThirdLevel>
  </div>
</template>
<script>
import ThirdLevel from "@/components/ThirdLevel";
export default {
  inheritAttrs : true,
  name: "SecondLvel",
  components: {ThirdLevel},
  mounted() {
    console.log(this.$attrs, "SecondLvel Attrs")
  }
}
</script>

可见第二层组件也收到了透视属性,第三次亦是如此,
在这里插入图片描述
而且第三次组件是自动继承所以根元素也有这两个属性:
在这里插入图片描述
v-bind可以绑定透传属性,但是只能写一个,不能写多个:

<template>
  <div class="firstLevel">
    <p>第一层组件</p>
    <SecondLvel v-bind="obj"></SecondLvel>
  </div>
</template>
<script>
import SecondLvel from "@/components/SecondLvel";
export default {
  inheritAttrs : false,
  name: "FirstLevel",
  components: {SecondLvel},
  data() {
    return {
      obj : {
        key1 : "v1",
        key2 : "v2",
        attrs : this.$attrs
      }

    }
  },

  mounted() {
    console.log(this.$attrs, "FirstLevel Attrs")
  }
}
</script>

我们可以将$attrs和我们想传递的数据放到一起进行传递。
在这里插入图片描述

相关文章:

  • 内网电脑做网站/安徽百度seo公司
  • 网站验证码目录/好的建站网站
  • 网站开发测试工具/十大网站排行榜
  • 网站建设所需素材/百度网页推广
  • 自己做网站除了域名还要买什么/英文站友情链接去哪里查
  • 成都网站制作公司dedecms/推广引流哪个软件最好
  • 在linux安装nginx
  • 《Buildozer打包实战指南》第三节 安装Buildozer打包所需的依赖文件
  • Retrofit源码分析实践(二)【Retrofit 免费的api测试工具引入】
  • Cadence PCB仿真使用Allegro PCB SI仿真参数单位配置与说明图文教程
  • 《和声学教程》学习笔记(四):属七和弦及其转位
  • Kubernetes:如何实现跨集群节点均匀调度分布Pod(Pod拓扑分布约束)
  • 3DMAX砖墙神器WallBuilder:快速生成常见砖墙插件教程
  • 郭天祥十天入门单片机学习笔记
  • 计算机网络必会:面向连接,无连接,可靠与不可靠
  • vue实现购物车思想
  • 用故事来传递商业价值
  • PTA 1095 解码PAT准考证 (C语言实现)