withDefaults 是 Vue 3 的一个内置工具函数,用于为 defineProps 中的可选参数指定默认值。
语法解释:
const props = withDefaults(defineProps<{
aaa?: boolean,
bbb?: boolean,
ccc?: string,
ddd?: boolean;
}>(), {
aaa: false, // 设置默认值
ccc: '',
ddd: false,
});
作用:
| 情况 | without withDefaults | with withDefaults |
|---|---|---|
| 父组件不传该 prop | undefined | 你设定的默认值 |
示例:
<!-- 父组件 -->
<father-comp /> <!-- 不传任何参数 -->
在子组件中:
props.aaa→false(默认值生效)props.ccc→''(默认值生效)props.ddd→false(默认值生效)props.bbb→undefined(没有设置默认值)
为什么需要它?
- 代码更清晰,明确知道每个 prop 的默认值
- 获得更好的 TypeScript 类型推断(默认值会体现在类型中)
- 避免
undefined导致的潜在问题