关于透传属性的一些疑问

来源:6-3 Icon 组件编码第一部分 - 完善功能以及样式添加

棉花_envxW3

2025-06-20

inheritAttrs控制的是非props属性,而不是props属性,本例中自定义的type和color都是props属性,它们已经作为props属性传给了子组件Icon,在本例中, :class="{ [vk-icon--${type}]: type }“的后一个type就来自于props,它是props.type的简写。type和style作用于“i”标签与inheritAttrs无关,所以我认为v-bind=”$attrs"和inheritAttrs:false这两句完全可以删掉。

写回答

1回答

张轩

2025-06-21

同学你好

你的观点说的是正确的。如果父组件只传了 type 和 color(都是 props),且子组件的 <i> 标签的 :class 和 style 只用到了 props,那么 inheritAttrs: false 和 v-bind="$attrs" 可以删除,因为它们没实际作用。

但如果父组件可能传非 props 属性(比如额外的 class 或事件),保留这两句更安全,增加组件灵活性。建议检查 $attrs 是否为空:若为空,可删;若不为空,建议保留。


0
1
棉花_envxW3
好的,谢谢老师
2025-06-24
共1条回复

进阶必学,打造媲美ElementPlus的组件库

Vue3.3 + TS4 ,自主打造媲美 ElementPlus 的组件库

509 学习 · 226 问题

查看课程