Vue子组件prop类型和如何设置默认值

代码2020-09-13650 人已阅来源:GoodMorning

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

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

  1. 它们写明了组件的 API,所以很容易看懂组件的用法;
  2. 在开发环境下,如果向一个组件提供格式不正确的 prop,Vue 将会告警,以帮助你捕获潜在的错误来源。

例如:

props:['status'],
#good:

#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 等实例属性还无法使用。

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

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

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

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