vue组件的inheritAttrs属性

摘要:
vue官网解释了inheritAttrs的属性:如果您不希望组件的根元素继承特性,可以在组件选项中设置inheritAtrs:false。这可能不是很好理解。我们可以举一个例子来验证它。父组件Vue<template><divclass=“Parent”><child componentaaa=“1111”></child component></div></template><script>importChildComponent from‘/child-component的exportdefault{components:{ChildComponent}}子组件Vue sets inheritAttrs:true(默认值)子组件exportdefault{˃子组件exportdefault{inheritAttrs:false,mounted(){console.log}}最终呈现结果:ElementsConsole摘要:从上面的示例中,我们可以看到,前提是父组件传递的属性没有在子组件的prop中注册。

vue官网对于inheritAttrs的属性解释:如果你不希望组件的根元素继承特性,你可以在组件的选项中设置 inheritAttrs: false

可能不是很好理解,我们可以举个例子来验证一下。

父组件 parent-component.vue

<template>
 <div class="parent">
    <child-component aaa="1111"></child-component>
  </div>
</template>
<script>
import ChildComponent from './child-component'
export default {
  components: {
    ChildComponent
  }
}
</script>

子组件 child-component.vue  设置 inheritAttrs: true(默认)

<template>
  <div class="child">子组件</div>
</template>
<script>
export default {
  inheritAttrs: true,
  mounted() {
    console.log('this.$attrs', this.$attrs)
  }
}
</script>

最后渲染的结果:

Elements

vue组件的inheritAttrs属性第1张

Console

vue组件的inheritAttrs属性第2张

 子组件 child-component.vue  设置 inheritAttrs: false

<template>
  <div class="child">子组件</div>
</template>
<script>
export default {
inheritAttrs: fasle, mounted() { console.log(
'this.$attrs', this.$attrs) } } </script>

最后渲染的结果:

Elements

vue组件的inheritAttrs属性第3张

Console

vue组件的inheritAttrs属性第2张

总结:

由上述例子可以看出,前提:子组件的props中未注册父组件传递过来的属性。

1.当设置inheritAttrs: true(默认)时,子组件的顶层标签元素中(本例子的div元素)会渲染出父组件传递过来的属性(本例子的aaa="1111")。

2.当设置inheritAttrs: false时,子组件的顶层标签元素中(本例子的div元素)不会渲染出父组件传递过来的属性(本例子的aaa="1111")。

3.不管inheritAttrs为true或者false,子组件中都能通过$attrs属性获取到父组件中传递过来的属性。

免责声明:文章转载自《vue组件的inheritAttrs属性》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇centos系统有多个内核,修改默认启动内核修改android手机文件权限下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vuejs 使用 lib 库模式打包 umd 解决 NPM 包发布的问题

由于升级了 v0.2 版 GearCase 使用打包工具从 parcel 更换成 vue-cli 3.x。因此打包后发布 NPM 包的方式与之前有很大的差异,这也导致了在发布完 GearCase v0.2.2 版本之后,我自己在进行 NPM / Yarn 安装包时。根本无法通过之前文档的方式,进行引入并注册组件。后来我大概花费了两天的时间来解决这个问题。...

jekins接通gitee的webhook做自动部署 vue、react、java、springBoot

简介 其实点一下,也是浪费生命,不是吗? 推送代码到Gitee时,由配置的 WebHook 触发 Jenkins 任务构建。多好! jekins安装插件 搜索并安装这两个插件Gitee Plugin、Jersey 2 API 第二个插件本不是必要的,是因为我目前当前Gitee Plugin插件有一个Bug,因此安装的。 安装完成后,记得重启下jekins...

解决vscode格式化vue文件出现的问题

遇到的问题 使用vscode开发vue项目的时候,格式化vue文件,与自己配置的eslint标准会有冲突。 引号问题:单引号变双引号 分号问题:行末是否加分号。自动加/减分号 当然还会有其他个性化冲突,只需要找到怎么修改,就好办了。 说明 vscode格式化文件,使用的是快捷键shift + alt + f 而我安装了vetur插件来格式化vue文件。...

vue 实现页面嵌套pdf之vue-pdf插件

近期vue移动端项目中遇到了页面内,嵌套展示pdf内容。实现方法很多种,可以用iframe嵌套,但不利于引擎优化seo。所以在网上找到了vue-pdf这个插件,这个插件非常好用,其中封装的方法也很多,属性能进行功能扩展。 接下来开始使用 第一步、安装 npm install --save vue-pdf 第二步、使用 <template> &l...

四: 使用vue搭建网站前端页面

---恢复内容开始--- 在搭建路由项目的时候的基本步骤 一:创建项目   安装好vue 搭好环境 (步骤在上篇博客中)   进入项目目录      cd   目录路径/ 目录名   创建项目          vue init webpack  项目名   效果:   项目文件结构:及作用    -- build...

vue中的router-view

Vue适合单页面应用,当你需要多个页面的时候,传统的web是通过转跳链接的方式实现的,而Vue可以通过路由的方式实现页面的专挑 demo: 图片组件: <template> <img src="http://t.zoukankan.com/…/example/img.png/> </template> 组件1 <t...