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>

这样,子组件就能够接收并使用父组件传递过来的属性了。