非 props 的 Attribute
一个组件中在没有被定义为 props 的 attribute 都会在 this.$attrs 可以访问到
Attribute 继承
对于单根节点标签的组件 Vue 会自动把 attribute 继承到根节点上,如 class、id、style 等一般不会定义为 props
这个行为称之为 attribute fallthrough 隐式贯穿
禁止继承
在一些情况不想根节点继承或多个根节点(因为如果有设置属性 Vue 不会隐式贯穿,会报警告)
设置 options,inheritAttrs:false
在禁止继承后,可以手动挂载
app.component('date-picker', {
inheritAttrs: false,
template: `
<div class="date-picker">
<input type="datetime-local" v-bind="$attrs" />
</div>
`
})
app.component('custom-layout', {
template: `
<header>...</header>
<main v-bind="$attrs">...</main>
<footer>...</footer>
`
})