像专业人士一样验证你的Vue道具

104 阅读3分钟

像专业人士一样验证你的Vue道具

Vue要求明确声明传递给组件的任何数据为props。此外,它还提供了一个强大的内置机制来验证这些数据。这就像组件和消费者之间的契约一样,确保组件按预期使用。

让我们来探讨一下这个强大的工具,它可以帮助我们在开发和调试过程中减少错误并增加我们的信心。

基础知识

原始类型

验证原始类型就像在原始类型构造函数中设置类型选项一样简单。

复杂类型

复杂类型也可以用同样的方法进行验证。

type ,可以是下列数值之一。

  • 数字
  • 字符串
  • 布尔型
  • 阵列
  • 对象
  • 日期
  • 函数
  • 符号

此外,type ,也可以是一个自定义类或构造函数,断言将用instanceof 检查。例如,给定下面的类。

你可以像这样把它作为一个道具类型。

高级验证

验证器函数

道具支持验证器函数的使用。这个函数接受道具的原始值,并且必须返回一个布尔值来确定这个道具是否有效。

使用枚举✨

有时你想把数值缩小到一个特定的集合,这可以通过伪造这样的枚举来实现。

这可以被导入并用于验证器和作为默认值。

最后,父级组件也可以导入并使用这个枚举,从而消除了我们应用程序中对魔法字符串的使用。

ℹ️ 符号是定义枚举值的另一种方式,当不需要转换为字符串时。[例子]

布尔型投递

布尔型道具有独特的行为。属性的存在与否可以决定道具的值。

TypeScript

将Vue内置的道具验证与TypeScript相结合,可以让我们对这个机制有更多的控制,因为TypeScript原生支持接口和枚举。

接口 ✨

我们可以使用一个接口和PropType 工具来注释复杂的道具类型。这保证了传递的对象会有一个特定的结构。

真实枚举 ✨

我们已经探讨了如何在Javascript中伪造一个枚举。这对于TypeScript来说是不需要的,因为枚举是本地支持的。

Vue 3

上述所有内容在使用Vue 3的Options或Composition API时都有效。不同的是,当使用<script setup>. ,道具必须使用defineProps() 宏来声明,像这样。

或者当使用TypeScript与<script setup>,可以使用纯类型注释来声明道具。

或者使用一个接口。

最后,使用基于类型的声明时,声明默认值。

结论

随着你的应用程序规模的扩大,类型检查是防止错误的第一道防线。Vue的内置道具验证很有说服力。结合TypeScript,它可以让你对正确使用组件接口有很高的信心,减少bug,提高整体代码质量和开发体验。