vue如何设置嵌套对象的默认道具

ang*_*iwi 6 javascript vue.js vue-component vuejs2

我的道具是这样的

house = {
  kitchen:{
    sink: ''
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过类似的事情,但没有成功。

props: {
    house: {
        type: Object,
        default: () => {
            kitchen : {
                sink: ''
            }
        }
    }
},
Run Code Online (Sandbox Code Playgroud)

如何为此类对象设置默认道具?

rol*_*oli 16

来自文档:

对象或数组默认值必须从工厂函数返回

所以问题是你没有返回默认对象。所以你可以这样做:

props: {
    house: {
        type: Object,
        default: () => ({ // <= note the parenthesis
            kitchen : {
                sink: ''
            }
        }) // <= here also
    }
},
Run Code Online (Sandbox Code Playgroud)

或者

props: {
    house: {
        type: Object,
        default: () => {
           return  {
              kitchen : { // <= note the return
                sink: ''
              }
           } 
        }
    }
},
Run Code Online (Sandbox Code Playgroud)


Bou*_*him 8

以下解决方案应该有效:

  props: {
   house: {
       type: Object,
        default: () => ({
          kitchen: {
             sink:''
            }
       })
  },
 }
Run Code Online (Sandbox Code Playgroud)

检查这个代码和框

如果上述解决方案不起作用,您可以使用标准化计算属性:

     props: {
         house: { type: Object }
       },
    computed: {
           normalizedHouse() {
              return {
                      kitchen:{
                         sink: ''
                        }
                     }
            }
         }
Run Code Online (Sandbox Code Playgroud)