• React中的PropTypes详解


    什么是prop-types?prop代表父组件传递过来的值,types代表类型。简单来说就是用来校验父组件传递过来值的类型

    propTypes用来规范props必须满足的类型,如果验证不通过将会有warn提示。

    React PropTypes的种类有

     1 React.PropTypes.array           // 队列
     2  
     3 React.PropTypes.bool.isRequired // Boolean 且必须
     4  
     5 React.PropTypes.func            // 函数
     6  
     7 React.PropTypes.number          // 数字
     8  
     9 React.PropTypes.object          // 对象
    10  
    11 React.PropTypes.string          // 字符串
    12  
    13 React.PropTypes.node            // 任何类型的: numbers, strings, elements 或者数组
    14  
    15 React.PropTypes.element         // React 元素
    16  
    17 React.PropTypes.instanceOf(XXX) // 某种XXX类型的对象
    18  
    19 React.PropTypes.oneOf(['foo', 'bar']) // 其中的一个字符串
    20  
    21 React.PropTypes.oneOfType([React.PropTypes.string, React.PropTypes.array]) // 其中的一种类型
    22  
    23 React.PropTypes.arrayOf(React.PropTypes.string)  // 某种类型的数组(字符串)
    24  
    25 React.PropTypes.objectOf(React.PropTypes.string) // 元素是字符串的对象
    26  
    27 React.PropTypes.shape({                          // 是否符合指定格式的对象
    28  
    29   color: React.PropTypes.string,
    30   fontSize: React.PropTypes.number
    31 });
    32 React.PropTypes.any.isRequired  // 可以是任何格式,且必要。
    33  
    34  
    35 // 自定义格式,不符合的时候放回Error
    36  
    37 // 不要用`console.warn` 或者 throw, 因为它在`oneOfType` 的情况下无效
    38  
    39  
    40 customPropType: function(props, propName, componentName) {
    41   if (!/^[0-9]/.test(props[propName])) {
    42     return new Error('Validation failed!');
    43   }
    44 }
    随着应用程序的增长,你可以用类型检查找到更多错误。你可以为你的应用使用第三方类型检查库,如:FlowTypeScript 等。你也可以不使用它们,因为React内嵌了一些类型检查功能。你可以设置组件的指定属性propTypes,为组件添加类型检查的能力。
    import PropTypes from 'prop-types';
    
    class Greeting extends React.Component {
      render() {
        return (
          <h1>Hello, {this.props.name}</h1>
        );
      }
    }
    
    Greeting.propTypes = {
      name: PropTypes.string
    };
  • 相关阅读:
    024_Python3 filter 函数高级用法
    023_Python3 map 函数高级用法
    022_Python3 lambda函数高级用法
    #整体二分,树状数组#洛谷 3332 [ZJOI2013]K大数查询
    #线段树分治,线性基,并查集#CF938G Shortest Path Queries
    #RMQ,动态开点线段树#CF803G Periodic RMQ Problem
    #二分图匹配#UVA1194 Machine Schedule
    #树状数组套线段树#洛谷 1975 [国家集训队]排队
    #分治,Dijkstra#洛谷 3350 [ZJOI2016]旅行者
    #线段树,离线#CF1000F One Occurrence
  • 原文地址:https://www.cnblogs.com/shun1015/p/14466295.html
Copyright © 2020-2023  润新知