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>
这样,子组件就能够接收并使用父组件传递过来的属性了。