【问题标题】:vue how set default props for nested objectvue 如何为嵌套对象设置默认道具
【发布时间】:2019-04-08 04:23:15
【问题描述】:
我的道具是这样的
house = {
kitchen:{
sink: ''
}
}
我试过这样的方法,没用。
props: {
house: {
type: Object,
default: () => {
kitchen : {
sink: ''
}
}
}
},
如何为此类对象设置默认道具?
【问题讨论】:
标签:
javascript
vue.js
vuejs2
vue-component
【解决方案1】:
来自文档:
对象或数组默认值必须从工厂函数返回
所以问题是你没有返回默认对象。所以你可以这样做:
props: {
house: {
type: Object,
default: () => ({ // <= note the parenthesis
kitchen : {
sink: ''
}
}) // <= here also
}
},
或者
props: {
house: {
type: Object,
default: () => {
return {
kitchen : { // <= note the return
sink: ''
}
}
}
}
},
【解决方案2】:
以下解决方案应该有效:
props: {
house: {
type: Object,
default: () => ({
kitchen: {
sink:''
}
})
},
}
检查这个codesandbox
如果上述解决方案不起作用,您可以使用标准化计算属性:
props: {
house: { type: Object }
},
computed: {
normalizedHouse() {
return {
kitchen:{
sink: ''
}
}
}
}