微信搜索【GreatMovetotheWorld】,第一时间与大家分享前端行业动态、学习路径等。本文已收录到GitHubhttps://github.com/qq449245884/xiaozhi,里面有完整的测试站点、资料和我的一线厂商访谈系列文章。Vue要求传递给组件的任何数据都声明为props。此外,它还提供了一个强大的内置机制来验证此类数据。这就像组件和消费者之间的合同一样,确保组件按预期使用。本节课,我们就来看看这个验证机制,它可以帮助我们在开发调试过程中减少但增加自信心(钓鱼时间)。基本原始类型校验基本类型比较简单,这里不做过多介绍,只看下面的例子:exportdefault{props:{//基本类型校验//("null"和"undefined"值允许anytype)propA:Number,//多种可能的类型propB:[String,Number],//必需参数propC:{type:String,required:true},//默认值propD:{type:Number,default:100},}}复杂类型复杂类型也可以用同样的方式验证。exportdefault{props:{//默认值对象propE:{type:Object,//对象或默认值数组必须从//工厂函数返回。该函数接收原始//元素作为参数。default(rawProps){return{message:'hello'}}},//数组默认值propF:{type:Array,default(){return[]}},//函数默认值propG:{type:Function,//不同于对象或数组的默认值。//这不是工厂函数//-这是默认函数default(){return'Defaultfunction'}}}}type可以是以下之一:使用instanceof检查。例如,给定以下类:classPerson{constructor(firstName,lastName){this.firstName=firstNamethis.lastName=lastName}}我们可以将Person作为类型传递给proptype:exportdefault{props:{author:Person}}高级验证验证器方法Props支持使用验证器函数。此函数接受prop原始值,并且必须返回一个布尔值以确定prop是否有效。prop:{validator(value){//该值必须与这些字符串之一匹配return['success','warning','danger'].includes(value)}}使用枚举有时我们希望将值缩小到一个特定的集合,这可以通过枚举来实现:exportconstPosition=Object.freeze({TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"});可以导入Validator也可以作为默认值:
