vue组件的props问题

请问下我在子组件定义一个

// 带有默认值的对象
propE: {
  type: Object,
  // 对象或数组默认值必须从一个工厂函数获取
  default: function () {
    return { message: 'hello' }
  }
},

如果我在父组件调用时传的对象:propE="{ test:'1213' }"。。它是没有message这个属性的,,如何把父组件传入参数和子组件定义的propE合并

阅读 2.7k
3 个回答

用计算属性

computed:{
mixProp(){
 let obj={mmessage:'abc'};
 let t=Object.assign({},obj,this.propE)
return t
}
}
default:any
为该 prop 指定一个默认值。如果该 prop 没有被传入,则换做用这个值。对象或数组的默认值必须从一个工厂函数返回。

由文档解释我们可以很清楚地知道 default 的内容只在该prop没传入时生效, 不能用来合并 对象属性,像楼上所说,你的需求可以通过计算属性来实现。

vue2 API文档之 props

两种常见的试图变更一个 prop 的情形

props: ['propE'],
data: function () {
  return {
    propELocal: {message: 'hello', test: this.propE.test}
  }
}

或者

props: ['propE'],
computed: {
  propELocal: function () {
    return {message: 'hello', test: this.propE.test}
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏