inheritAttrs: false
是 Vue 2.4.0+ 引入的组件选项,用于控制是否从父组件继承属性到子组件的根元素上。当设置为 true
时(默认行为),父组件中的非 prop
属性会被应用到子组件的根元素上。当设置为 false
时,这些属性不会被应用到子组件的根元素上。
例如,如果你有以下父组件:
<template> | |
<div> | |
<child-component class="parent-class" id="parent-id" /> | |
</div> | |
</template> | |
<script> | |
import ChildComponent from './ChildComponent.vue'; | |
export default { | |
components: { | |
ChildComponent | |
} | |
} | |
</script> |
而子组件是这样的:
<template> | |
<div>子组件内容</div> | |
</template> | |
<script> | |
export default { | |
inheritAttrs: false | |
} | |
</script> |
当 inheritAttrs: false
时,子组件的根元素上不会有 class="parent-class"
和 id="parent-id"
属性。
如果你需要在子组件中使用这些属性,你应该显式地通过 props
传递它们:
<template> | |
<div :class="classAttr" :id="idAttr">子组件内容</div> | |
</template> | |
<script> | |
export default { | |
props: ['classAttr', 'idAttr'], | |
inheritAttrs: false | |
} | |
</script> |
父组件需要更新,将对应的属性通过 props
传递给子组件:
<template> | |
<div> | |
<child-component :class-attr="'parent-class'" :id-attr="'parent-id'" /> | |
</div> | |
</template> | |
<script> | |
import ChildComponent from './ChildComponent.vue'; | |
export default { | |
components: { | |
ChildComponent | |
} | |
} | |
</script> |
这样,子组件就能够接收并使用父组件传递过来的属性了。