Vue3 `inheritAttrs`属性继承与`$attrs`使用与讲解

  • $attrs和inheritAttrs用法

  • $attrs属性解释:包含了父作用域中不作为组件 props 或自定义事件的 attribute 绑定和事件。当一个组件没有声明任何 props 时,这里会包含所有父作用域的绑定,并且可以通过 v-bind="$attrs" 传入内部组件,这在创建高阶的组件时会非常有用。

  • inheritAttrs属性解释:如果你不希望组件的根元素继承特性,你可以在组件的选项中设置 inheritAttrs: false

举个例子

打开在线 Vue SFC https://sfc.vuejs.org/

App.vue代码如下




子组件 MyInput.vue 设置 inheritAttrs: true(默认)



此时我们右键检查输入框查看渲染的Dom


inheritAttrs:true

取消注释 inheritAttrs: false, 再次检查Dom

inheritAttrs: false

小结:
由上述例子可以看出,子组件的props中未注册父组件传递过来的属性

  • 当设置inheritAttrs:true时,子组件的顶层标签元素中会渲染出父组件传递过来的属性(例如:type="text"等)
  • 当设置inheritAttrs: false时,子组件的顶层标签元素中不会渲染出父组件传递过来的属性
  • 不管inheritAttrs为true或者false,子组件中都能通过$attrs属性获取到父组件中传递过来的属性。

你可能感兴趣的:(Vue3 `inheritAttrs`属性继承与`$attrs`使用与讲解)