当前位置: 首页 > article >正文

20250317-vue-Prop4

运行时类型检查

校验选项中的 type 可以是下列这些原生构造函数:

  • String
  • Number
  • Boolean
  • Array
  • Object
  • Date
  • Function
  • Symbol
  • Error

另外,type 也可以是自定义的类或构造函数,Vue 将会通过 instanceof 来检查类型是否匹配。例如下面这个类:

class Person {
	constructor(firstName,lastName) {
		this.firstName = firstName;
		this.lastName = lastName;
	}
}

我们可以将其作为一个 prop 的类型:

<template>
	<text>{{aProp.message}}</text>
</template>

<script>
	import Person from './Person.js'
	export default {
		props:{
			author:Person
		}
	}
</script>

<style>
</style>

Vue 会通过 instanceof Person 来校验 author prop 的值是否是 Person 类的一个实例。

js文件:

const Person = {
	class Person {
		constructor(firstName,lastName) {
			this.firstName = firstName;
			this.lastName = lastName;
		}
	}
} 
export default Person

子组件代码:

<template>
	<text>{{aProp.message}}</text>
</template>

<script>
	import Person from './Person.js'
	export default {
		props:{
			author:Person
		}
	}
</script>

<style>
</style>

父组件代码:

<template>
	<Sub :author="anObject"></Sub>
</template>

<script>
	import Sub from './Sub.vue'
	export default {
		components: {
			Sub,
		},
		data() {
			return {
				anObject:{
					anProperty:'anProperty'
				}
			}
		}
	}
</script>

<style>

</style>

报错:

Invalid prop: type check failed for prop "author". Expected Person, got Object

可为 null 的类型

如果该类型是必传但可为 null 的,你可以用一个包含 null 的数组语法:

export default {
		props:{
			id:{
				type:[string,null],
				required:true
			}
		}
	}

注意如果 type 仅为 null 而非使用数组语法,它将允许任何类型。

Boolean 类型转换

声明为 Boolean 类型的 props 有特别的类型转换规则。以带有如下声明的 <MyComponent> 组件为例:

export default {
  props: {
    disabled: Boolean
  }
}

该组件可以被这样使用:

<!-- 等同于传入 :disabled="true" -->
<MyComponent disabled />

<!-- 等同于传入 :disabled="false" -->
<MyComponent />

当一个 prop 被声明为允许多种类型时,Boolean 的转换规则也将被应用。然而,当同时允许 String 和 Boolean 时,有一种边缘情况——只有当 Boolean 出现在 String 之前时,Boolean 转换规则才适用:

// disabled 将被转换为 true
export default {
  props: {
    disabled: [Boolean, Number]
  }
}

// disabled 将被转换为 true
export default {
  props: {
    disabled: [Boolean, String]
  }
}

// disabled 将被转换为 true
export default {
  props: {
    disabled: [Number, Boolean]
  }
}

// disabled 将被解析为空字符串 (disabled="")
export default {
  props: {
    disabled: [String, Boolean]
  }
}


http://www.kler.cn/a/600321.html

相关文章:

  • 常见中间件漏洞攻略-Tomcat篇
  • 【Android Studio开发】生命周期、Activity和组件通信(上)
  • JavaScript实现一个函数,找出两个数组的交集(共同元素)的原理及思路。
  • 项目总结:GetX + Kotlin 协程实现(依赖注入补充)
  • 【QA】组合模式在Qt有哪些应用?
  • 深度学习PyTorch之动态计算图可视化 - 使用 torchviz 生成计算图
  • 996引擎-接口测试:消息Tips
  • SEARCH-R1: 基于强化学习的大型语言模型多轮搜索与推理框架
  • 如何用Kafka实现优先级队列
  • 大模型金融企业场景落地应用
  • SQL 案例1 按秒分组取每天最新记录
  • VSTO(C#)Excel开发进阶1:设计功能区Ribbon 对话框加载器 多个功能区 多个组
  • Python 用户账户(创建用户账户)
  • 23种设计模式-创建型模式-工厂方法
  • Linux 基础入门操作 第十二章 TINY Web 服务器
  • 金融行业 UE/UI 设计:解锁高效体验,重塑行业界面
  • BEVFormer报错(预测场景与真值场景的sample_token不匹配)
  • 洛谷题目: P1225 黑白棋游戏 题解 (本题难)
  • leetcode二叉树3
  • React项目中,递归写法获取tree的id集合