props默认值仅在父组件未传值(undefined)时生效,需用函数返回对象/数组避免共享,必填项不可设default;配合type校验可提升健壮性。

父组件没传值时,子组件靠 props 默认值就能稳稳显示兜底内容,不用额外判断或报错。
在 props 中直接设 default
这是最常用也最推荐的方式。子组件声明 props 时,用对象语法为每个字段指定 type 和 default:
- 字符串默认值写成函数返回,避免对象/数组被多个实例共享:
default: () => '暂无标题' - 数字、布尔值可直接写:
default: 0或default: false - 如果 prop 是必填项(
required: true),default 就不会生效,所以两者别同时设
区分 undefined 和空字符串等“假值”
default 只在 prop 完全未传(即 undefined)时触发。如果父组件传了空字符串 ''、null 或 0,default 不会覆盖——这符合预期,因为那是明确传递的值。
若想对空字符串也兜底,模板里用逻辑运算符:{{ title || '默认标题' }},或在 computed 中统一处理。
立即学习“前端免费学习笔记(深入)”;
Vue 3 <script setup> 写法示例</script>
子组件中这样声明即可:
defineProps({<br> title: { type: String, default: '未命名' },<br> count: { type: Number, default: 1 },<br> tags: { type: Array, default: () => [] }<br>})
父组件不写 :title 属性,子组件就自动显示“未命名”;写了但值为空,仍按空值渲染,保持语义清晰。
配合类型校验增强健壮性
加 type 不仅能提示 IDE,还能在开发模式下捕获错误。比如传了数字却声明为 String,控制台会警告。default 和 type 搭配使用,让组件更可靠、易维护。


















