非 props 的 Attribute
一个组件中在没有被定义为 props 的 attribute 都会在 this.$attrs 可以访问到

Attribute 继承

对于单根节点标签的组件 Vue 会自动把 attribute 继承到根节点上,如 class、id、style 等一般不会定义为 props
这个行为称之为 attribute fallthrough 隐式贯穿

禁止继承

在一些情况不想根节点继承或多个根节点(因为如果有设置属性 Vue 不会隐式贯穿,会报警告)
设置 options,inheritAttrs:false
在禁止继承后,可以手动挂载

  1. app.component('date-picker', {
  2. inheritAttrs: false,
  3. template: `
  4. <div class="date-picker">
  5. <input type="datetime-local" v-bind="$attrs" />
  6. </div>
  7. `
  8. })
  1. app.component('custom-layout', {
  2. template: `
  3. <header>...</header>
  4. <main v-bind="$attrs">...</main>
  5. <footer>...</footer>
  6. `
  7. })