vue3 设置组件的默认$attrs


使用组件的时候,如果需要传入组件props之外的属性,默认会只传到组件的最外层元素
比如组件结构如下



// script
const props = defineProps<{
  rules: RulesProp;
  // inputRef: {val: string}
  modelValue: string;
}>();

使用的时候,想要传递自定义的 placeholder 属性
这个时候,就需要先用inheritAttrs禁用默认的属性传递




// setup语法糖需要额外定义一个script才能定义name和inherAttrs


然后给组件通过v-bind="$attrs"绑定默认属性,如上面的代码已经绑定好了
如果想要获取父组件传递的属性,则可以通过useAttrs()获取

// 导入 useAttrs 组件
import { ref, useAttrs } from 'vue';

// 获取
console.log(useAttrs(), 'useAttrs');