React 属性验证 propTypes

2023-05-16

React 组件可以根据预先设置进行属性验证。

React prop验证使用 propTypes,它可以保证我们的应用组件被正确使用,React.PropTypes 提供很多验证器 (validator) 来验证传入数据是否有效。当向 props 传入无效数据时,JavaScript 控制台会抛出警告。

以下实例创建一个 MyTest 组件,属性 title 是必须的且是字符串,非字符串类型会自动转换为字符串 :

var title = "菜鸟教程";
// var title = 123;
class MyTest extends React.Component {
  render() {
    return (
      <h1>Hello, {this.props.title}</h1>
    );
  }
}
 
MyTitle.propTypes = {
  title: PropTypes.string
};
ReactDOM.render(
    <MyTest title={title} />,
    document.getElementById('example')
);

以下是React 常用的一些验证器样本,写在这里方便摘抄。

MyComponent.propTypes = {
	// 可以声明 prop 为指定的 JS 基本数据类型,默认情况,这些数据是可选的
	myPropArray: React.PropTypes.array,
	myPropBool: React.PropTypes.bool,
	myPropFunc: React.PropTypes.func,
	myPropNumber: React.PropTypes.number,
	myPropObject: React.PropTypes.object,
	myPropString: React.PropTypes.string,

	// 可以被渲染的对象 numbers, strings, elements 或 array
	myPropNode: React.PropTypes.node,

	//  React 元素
	myPropElement: React.PropTypes.element,

	// 用 JS 的 instanceof 操作符声明 prop 为类的实例。
	myPropMessage: React.PropTypes.instanceOf(Message),

	// 用 enum 来限制 prop 只接受指定的值。
	myPropEnum: React.PropTypes.oneOf(['News', 'Photos']),

	// 可以是多个对象类型中的一个
	myPropUnion: React.PropTypes.oneOfType([
		React.PropTypes.string,
		React.PropTypes.number,
		React.PropTypes.instanceOf(Message)
	]),
 
	// 指定类型组成的数组
	myPropArrayOf: React.PropTypes.arrayOf(React.PropTypes.number),

	// 指定类型的属性构成的对象
	myPropObjectOf: React.PropTypes.objectOf(React.PropTypes.number),

	// 特定 shape 参数的对象
	myPropObjectWithShape: React.PropTypes.shape({
		color: React.PropTypes.string,
		fontSize: React.PropTypes.number
	}),
 
    // 任意类型加上 `isRequired` 来使 prop 不可空。
    myPropFunc: React.PropTypes.func.isRequired,
 
    // 不可空的任意类型
    myPropAny: React.PropTypes.any.isRequired,
 
    // 自定义验证器。如果验证失败需要返回一个 Error 对象。不要直接使用 `console.warn` 或抛异常,因为这样 `oneOfType` 会失效。
    myCustomProp: function(props, propName, componentName) {
		if (!/matchme/.test(props[propName])) {
			return new Error('Validation failed!');
		}
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React 属性验证 propTypes 的相关文章

随机推荐

  • 在 Vue3 + Element Plus 中生成动态表格,动态修改表格,多级表头,合并单元格

    本文完整版 xff1a 在 Vue3 43 Element Plus 中生成动态表格 xff0c 动态修改表格 xff0c 多级表头 xff0c 合并单元格 Vue3 43 Element Plus 生成动态表格 Vue3 43 Eleme
  • 后端实战手把手教你写文件上传接口:如何使用 Node.js + MongoDB 开发 RESTful API 接口(Node.js + Express + MongoDB)

    后端实战手把手教你写文件上传接口 文件上传管理后台 Node js 43 Express 43 Multer 43 MongoDB后端项目结构 配置 Node js 开发环境配置 MongoDB 数据库配置文件上传存储的中间件创建文件上传的
  • React Table 表格组件使用教程 排序、分页、搜索过滤筛选功能实战开发

    React Table 表格组件使用教程 react table 安装和使用React Table 表格排序功能React Table 表格搜索过滤筛选功能React Table 表格分页功能React table 排序 搜索过滤筛选 分页
  • React useReducer 终极使用教程

    React useReducer 终极使用教程 useReducer 工作原理关于 reducer 函数 懒惰创建初始 statedispatch 函数不触发dispatch useState 和 useReducer 比较和区别及应用场景
  • 简单的数据可视化---绘制散点图

    使用scatter绘制散点图并设置其样式 绘制单个点 要绘制单个点 xff0c 可以使用函数scatter xff0c 并向它传递一对x和y坐标 xff0c 它将在指定位置绘制一个点 xff1a span class token keywo
  • python随机漫步

    随机漫步 这次我们将使用python生成随机漫步数据 xff0c 然后用matplotlib的方式将这些数据呈现出来 随机漫步每次行走都完全是随机的 xff0c 没有明确的方向 xff0c 结果是由一系列随机决策决定的 你可以这样认为 xf
  • python基础

    python基础 文章目录 python基础基础语法关键字标识符多行语句数据类型 字符串输出import 与from import基本数据类型多个变量赋值标准数据类型Number xff08 数字 xff09 数值运算数学函数随机数函数三角
  • Debian简介与Debian源

    1 Deiban是一套自由操作系统 使用Linux内核 xff0c 大部分基本工具来自GNU计划 因此称Deiban为Debian GNU Linux Debian是第一个使用包管理系统的Linux发行版 xff0c 是的安装和删除软件变得
  • cloudmusic:网易云爬虫

    文章目录 cloudmuscic xff1a 网易云音乐爬虫安装使用music对象1 music对象属性2 music对象方法3 music对象函数 user对象1 user对象属性2 user对象方法3 获取user对象函数 cloudm
  • 链家深圳二手房房价数据分析

    文章目录 链家深圳二手房房价数据分析1 链家数据爬取源码2 雷达图的绘制2 1 源码2 2 雷达图效果图 3 饼状图的绘制3 1 源代码3 2 饼状图效果图 4 多维散点图4 1 源码4 2 多维散点图效果图 5 玫瑰图5 1 源码5 2
  • UNIX基础知识

    文章目录 UNIX基础知识1 1 引言1 2 UNIX体系结构1 3 登录1 4 文件和目录1 5 输入和输出1 6 程序和进程1 程序2 进程和进程ID3 进程控制4 线程和线程ID 1 7 出错处理出错恢复 1 8 用户标识1 用户ID
  • 栈和队列——小猫钓鱼

    星期天A和B在一起玩扑克牌 xff0c 他们在玩一个古怪的扑克牌游戏 小猫钓鱼 游戏的规则是这样的 xff0c 将一副扑克牌平均分成两份 xff0c 每人拿一份 A先拿出手中的第一章牌放在桌上 xff0c 然后B也从手里拿出一张牌放在桌上
  • 二叉树与二叉树遍历

    树的介绍 你可能回文树和图有什么区别 xff1f 这个称之为树的东西和无向图差不多嘛 树其实就是不包含回路的连通无向图 图画的不好啊 xff0c 把箭头忽略一下将就看一下 xff0c 上面这个图左边就是一棵树 xff0c 而右边就是一个图
  • 广度优先搜索

    在前面的迷宫中 xff0c 我们使用了深度优先搜索的方法 xff0c 这里介绍一个新的方法来解决这个问题 广度优先搜索 xff0c 也称为宽度优先搜索 这里还是用一个二维数组来存储迷宫 xff0c 最开始的时候A也是在迷宫 0 0 处 xf
  • 图的遍历--深度优先搜索

    深度优先搜索和广度优先搜索 xff0c 其实都是针对图的变量而言的 简单来说 xff0c 图就是一些圆点和连接这些圆点的直线组成 例如上图的这五个定点和四条边 我们现在从1号顶点开始遍历整个图 xff0c 遍历指的就是把图的每一个顶点都访问
  • 暴力的枚举

    枚举算法又叫穷举算法 xff0c 光听名字就是能知道这个很暴力 有一个题 xff1a 3 6528 61 3 8256 xff0c 在两个方框里面填入相同的数字使得等式成立 你可能会觉得这个很简单 xff0c 3行代码就可以搞定 xff1a
  • 虚拟机的使用及基本命令

    虚拟机的使用 kiosk 64 foundation0 Desktop rht vmctl view desktop 显示虚拟机 kiosk 64 foundation0 Desktop rht vmctl start desktop 打开
  • 【虚拟机网络问题】关于怎么解决Ubuntu上Linux网络突然失灵这个问题的若干方案汇总

    虚拟机网络问题 关于怎么解决Ubuntu上Linux网络突然失灵这个问题的若干方案汇总 PS xff1a 本文仅是针对个人使用基于Ubuntu18 04上的Linux系统问题相关记录 xff0c 便于遇到此类问题快速解决 前言 本篇文章在参
  • sublime text 3+mingw搭建C++编译环境

    sublime text 3 43 mingw搭建C 43 43 编译环境 附上Sublime Text下载地址和MinGW下载链接 目录 sublime text 3mingw搭建C编译环境 目录安装MinGW系统配置环境 配置参数简单测
  • React 属性验证 propTypes

    React 组件可以根据预先设置进行属性验证 React prop验证使用 propTypes xff0c 它可以保证我们的应用组件被正确使用 xff0c React PropTypes 提供很多验证器 validator 来验证传入数据是