Vue子组件prop类型和默认值

1、设置prop的数据类型有什么好处?

细致的 prop 定义有两个好处:

a、它们写明了组件的 API,所以很容易看懂组件的用法;

b、在开发环境下,如果向一个组件提供格式不正确的 prop,Vue 将会告警,以帮助你捕获潜在的错误来源。

例如:

props:['status'],

#good:

props:{
    status:String
}

#better:

// 更好的做法!
props: {
  status: {
    type: String,
    required: true,
    validator: function (value) {
      return [
        'syncing',
        'synced',
        'version-conflict',
        'error'
      ].indexOf(value) !== -1
    }
  }
}

###注意 props 会在组件实例创建之前进行校验,所以在 default 或 validator 函数里,诸如 data、computed 或 methods 等实例属性还无法使用。

2、数据类型为Array、Function、Object时的写法

//接收的数据类型为数组
arr: {
type: Array,
default: () => {
return []
}
},

//接收的数据类型为函数
fun: {
type: Function,
default: () => () => {}
},

//接收的数据类型为对象
obj: {
type: Object,
default: () => ({})  //这里是注意是括弧,必须是括弧。
}