【问题标题】: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: ''
                              }
                           }
                  }
               }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-12-12
        • 1970-01-01
        • 2019-05-08
        • 2019-07-14
        • 2017-05-24
        • 2019-03-13
        • 2020-06-01
        相关资源
        最近更新 更多