验证VueProps类型,这几种方式你可能还没试用过
vue要求任何传递给组件的数据,都要声明为props。此外,它还提供了一个强大的内置机制来验证这些数据。这就像组件和消费者之间的契约一样,确保组件按预期使用。
这节课我们来看下这个验证机制,它可以帮助我们在开发和调试过程中减少but,增加我们的自信心(摸鱼时间)。基础原始类型
验证基本类型比较简单,这里我们不过多的介绍,直接看下面例子:exportdefault{props:{Basictypecheck(null和undefined值允许任何类型)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(){returnDefaultfunction}}}}
type可以是以下之一:NumberStringBooleanArrayObjectDateFunctionSymbol
此外,type也可以是一个自定义的类或构造函数,然后使用instanceof进行检查。例如,给定下面的类:classPerson{constructor(firstName,lastName){this。firstNamefirstNamethis。lastNamelastName}}
我们可以把Person作为一个类型传递给prop类型:exportdefault{props:{author:Person}}高级验证validator方法
Props支持使用一个validator函数。这个函数接受prop原始值,并且必须返回一个布尔值来确定这个prop是否有效。prop:{validator(value){Thevaluemustmatchoneofthesestringsreturn〔success,warning,danger〕。includes(value)}}使用枚举
有时我们想把值缩小到一个特定的集合,这可以通过枚举来实现:exportconstPositionObject。freeze({TOP:top,RIGHT:right,BOTTOM:bottom,LEFT:left});
它可以导入validator中使用,也可以作为默认值:templatespan:classarrowposition{position}{{position}}spantemplate
最后,父级组件也可以导入并使用这个枚举,它消除了我们应用程序中对魔法字符串的使用:templateDropDownComponent:positionPosition。BOTTOMtemplate布尔映射
布尔类有独特的行为。属性的存在或不存在可以决定prop的值。!等价于:disabledtrueMyComponentdisabled!价于:disabledfalseMyComponentTypeScript
将Vue的内置prop验证与TypeScript相结合,可以让我们对这一机制有更多的控制,因为TypeScript原生支持接口和枚举。Interface
我们可以使用一个接口和PropType来注解复杂的prop类型。这确保了传递的对象将有一个特定的结构。枚举
我们已经探讨了如何在JS中伪造一个枚举。这对于TypeScript来说是不需要的,它本向就支持了:Vue3
上述所有内容在使用Vue3与选项API或组合API时都有效。区别在于使用codepre
或者在使用TypeScript的codepre
或者使用一个接口:
最后,在使用基于类型的声明时,声明默认值。总结
随着应用程序规模的扩大,类型检查是防止错误的第一道防线。结合TypeScript,它可以让你对正确使用组件接口有很高的信心,减少bug,提高整体代码质量和开发体验。
作者:FotisAdamakis译者:前端小智来源:mediun原文:https:fadamakis。mdium。comvalidatingyurvuepropslikeapro5a2d0ed2b2d6
毛主席参加陈毅追悼会,看到一人所做挽联时,批示给他安排工作1972年开国元帅陈毅将军,因不堪疾病的折磨在北京逝世。当众人惊闻噩耗,周总理等人怀着无比沉重的心情到医院与他告别。这个在战线和外交线上奋战的英雄永远地离开了我们。随后国家为陈毅召
达赖与班禅究竟是什么关系?二者谁的地位更高?西藏作为我国西部边陲大省,一直以来充满了神秘色彩。藏传佛教就诞生在这片神秘的土地上,因此也笼罩上了一层神秘的面纱。达赖与班禅作为藏传佛教中的特殊存在,他们之间是什么关系呢?诞生与发
Nature最新研究探秘工作记忆的神经机制本文由brainnews脑科学世界团队原创编译,转载请联系授权。工作记忆大脑将信息内化并灵活使用它来指导行为的能力是认知的重要组成部分。尽管已在多个脑区观察到与工作记忆相关的活动,
隐入尘烟你看,那两个可怜人引言土地与农民之间,就像有脐带链接,为对方供给着营养。而这脐带,又会演化成锁链,把农民牢牢地束缚在土地之上,永远无法离开。作者书影君2022年第12篇,总第313篇原创文章1hr蜜
解放海南有多险?毛主席晚打两个月,海南很可能变成第二个台湾茫茫海峡一天险,负隅顽抗伯陵线。木船铁舰何以敌,笑借东风踏海南。邓华将军永远不能忘记解放海南的峥嵘岁月,30年后故地重游仍然无比激动感慨!这场原始木帆船打败钢铁大兵舰的艰苦战斗,简
孩子太磨蹭?4种性格4种催法(内含性格分析)网上有个视频,让人看了忍俊不禁幼儿园门口,一个小萌娃脚蹭着地面一步一步往前挪。远处的保安大叔看到后,赶紧示范怎么迈大步,奈何小可爱自顾自迈着小碎步,总是离大门十万八千里。任老母亲眼
怎样给孩子选课外书?告诉你怎样了解孩子喜欢看什么书怎样给孩子选课外书?这是很多宝妈宝爸都遇到的头疼问题。其实有句耳熟能详的老话就能回答这个问题兴趣是最好的老师,与其头疼我们单方面应该选怎样的书给孩子,不如直接了解孩子现阶段对什么感
如何才能拥有一个心理强大的孩子?前不久,听说隔壁小区一个孩子高考结束就跳楼了。孩子父母哭着说,如果时间可以倒流,他们会尊重孩子,不会再逼着孩子学习了。如果孩子学习好了,但是心理出现了问题。比起学习成绩,更重要的是
当孩子上新的幼儿园感到害怕时,家长可以做好这五步文牛妈怪言怪语牛妈说生活从来不是一帆风顺的。只有我们自己去适应它。牛娃也上了三所幼儿园。并不是牛妈焦虑,担心孩子在幼儿园不适应,更不是害怕孩子在幼儿园不开心。而是生活的不容易。第一
恐怖片人吓人人吓人是1982年由寰亚电影公司发行,嘉禾娱乐事业有限公司出品,洪金宝监制,午马执导,洪金宝钟楚红钟发午马林正英等人主演的僵尸灵幻片。人吓人海报一群外乡人押解着马麟祥的尸体回乡,并
汪峰定律虽迟但会到娱乐聚焦最近新流行一个词汪峰定律,说的是这些年汪峰老师,每逢发新专辑必然要出大瓜汪峰老师8月24日刚官宣出新专辑了,也许我可以无视死亡正当大家纷纷表示汪峰定律要失效的时候,就爆出了