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 或 arraymyPropNode: 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!');}}
}

React 属性验证 propTypes相关推荐

  1. React属性与状态

    React属性与状态 属性和状态作为组件之间数据流动的途径. 单向数据流 单向数据流:更新 DOM 的数据总是从顶层流下来,用户事件不直接操作 DOM,而是操作顶层数据.这些数据从顶层流下来同时更新了 ...

  2. 七十七、React中的propTypes,defaultProps和生命周期函数

    2020/11/19. 周四.今天又是奋斗的一天. @Author:Runsen React,相比于Vue,React更加灵活,但是对JavaScript基础的要求也更高一些.我继续学习React 文 ...

  3. [react] React中验证props的目的是什么?

    [react] React中验证props的目的是什么? 对属性进行强检验,避免运行时报错 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主目录 与歌谣一起通 ...

  4. react 中的propTypes类型检测

    咋说了,可能跟 js本身弱类型语言有关吧, 当我们的react项目 越来越庞大而又复杂的时候, 特别是那种公共组件,如果不限制类型 可能会千奇百怪的往里面传入一些数据, 除非 你的文档中很详细描述每个 ...

  5. java 对象视图框架_Stripes视图框架Java对象属性验证和prototype.js Ajax的测试

    Stripes视图框架Java对象属性验证,它允许对字段设置是否必须填写,对数字大小进行限制等.我用prototype.js Ajax 将验证后的数据及时地展示出来,下面来看程序. 1.编写User实 ...

  6. React属性之Refs

    React属性之Refs 1 介绍 2 使用方法 2.1 createRef(版本>=React16.3) 2.2 回调Refs 2.3 String类型的Refs(已过时,不推荐使用) 2.4 ...

  7. React系列知识——PropTypes与DefaultProps的应用

    PropTypes 提供一系列验证器,可用于组件接收到的数据类型是有效的.当传入的 prop值类型不正确时,JavaScript 控制台将会显示警告,propTypes仅在开发模式下进行检查. Pro ...

  8. React中的propTypes

    在多人开发时,当被人使用自己定义的组件时,有可能出现类型传错的情况,而在自己的组件上加上prop-types,他可以对父组件传来的props进行检查,加入父组件中想传递的是字符串类型'3',而传递了一 ...

  9. React context 、PropTypes

    也是初学react 看到公司项目中 老是有这个PropTypes.any 来声明contextTypes 中属性 半懂不懂的 所以准备来一起学下 给他弄明白了 PropTypes : 一个库 要是不用 ...

最新文章

  1. 管理虚拟机的艺术——有备无患
  2. 【 FPGA 】按键消抖与LED灯流动小实验
  3. OSX unable to write 'random state'
  4. php 应用宝支付,U8SDK——应用宝YSDK新的支付流程
  5. java判断或_Java 条件判断
  6. 剑指offer第12题打印从1到n位数以及大整数加法乘法
  7. springmvc+mybatis多数据源配置,AOP注解动态切换数据源
  8. 自然语言21_Wordnet
  9. 百度前端技术学院---vue动态数据绑定-3
  10. 中国古代30大名将VS100名将排行(按时间顺序)
  11. ROI Pooling和ROI Align、ROI Warp解析
  12. 动态规划--01背包问题详解
  13. 大数据学习-用户画像
  14. 08 | 数据采集:如何自动化采集数据?
  15. 页面报错405了怎么办
  16. Motan服务的启动
  17. Non-negative Matrix Factorization 非负矩阵分解
  18. 银川水利学校计算机专业怎么样,黄河水利职业技术学院的计算机专业怎么样
  19. 2021年全球CT和PET扫描仪收入大约7229.4百万美元,预计2028年达到7883百万美元
  20. 直流稳压电源与信号产生电路(模电速成)

热门文章

  1. Arduino UNO测试MH-Z16二氧化碳CO2传感器
  2. 除了马云刘强东饭局外,中国科技大佬们在达沃斯说了些什么?
  3. 华为哪些手机用的鸿蒙,华为有手机用鸿蒙系统吗?华为哪些手机用的鸿蒙系统?...
  4. MipMap的LOD实现原理
  5. 牛客网专项练习30天Pytnon篇第24天
  6. 看机器学习如何驾驭光影:一键为照片增光添彩的“人像光效”
  7. 苹果重视中国市场恶补“中国话”
  8. Mybatis-Plus查询中排除标识字段,如密码等
  9. 3-Tensorflow-demo_02-变量_占位符_feeddict使用
  10. 不伤耳蓝牙耳机什么牌子好、骨传导耳机最好品牌