You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue如何将对象类型Props与默认值进行合并?

实现对象Props的属性合并默认值

要实现传入部分title属性时与默认值自动合并,你需要在withDefaults的工厂函数中利用传入的props参数,结合Object.assign或对象展开运算符来合并默认值与用户传入的属性。具体操作如下:

1. 调整Props类型定义

首先修改Props接口,将title中的type设为可选属性,允许用户只传入text:

export interface Props {
  title: {
    type?: 'h1' | 'h2' // 设为可选,支持仅传入text
    text: string
  }
}

2. 在withDefaults中实现合并逻辑

通过工厂函数接收传入的props,将默认的type: 'h2'与用户传入的title对象合并:

方法一:使用Object.assign

withDefaults(defineProps<Props>(), {
  title: (props) => {
    // 用默认type补全缺失属性,用户传入的type会优先保留
    return Object.assign({ type: 'h2' }, props.title)
  },
})

方法二:使用对象展开运算符(更简洁)

withDefaults(defineProps<Props>(), {
  title: (props) => ({
    type: 'h2',
    ...props.title // 展开用户传入的属性,同名属性会覆盖默认值
  })
})

原理说明

  • 原写法直接返回固定默认对象,无法与用户传入的属性合并;而通过工厂函数接收props参数,可获取用户传入的title部分属性。
  • Object.assign和展开运算符都会实现属性合并:若用户传入了type,则会覆盖默认的h2;若仅传text,则保留默认的type: 'h2'。

内容的提问来源于stack exchange,提问作者user16589580

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 06:15:11