美文网首页
React的组件属性类 propTypes

React的组件属性类 propTypes

作者: 黄清淮 | 来源:发表于2016-12-20 15:45 被阅读0次

    作用:验证组件实例的属性是否符合要求

    Todo.propTypes = { //isRequired  代表该参数是必须的
        remove: PropTypes.func.isRequired,  //必须而且必须是函数
        todo: PropTypes.object,     //非必须 可传可不传
        title: PropTypes.string.isRequired, 
    };
    var data = 123;
    render( 
      <Todo title={data} />,  //此处验证不会通过
      document.body
    );
    

    组件的属性可以接收任意的值,数字,函数,字符串等

    // 可以声明 prop 为指定的 JS 基本类型。默认
    // 情况下没有isRequired,这些 prop 都是可传可不传的。
        optionalArray: React.PropTypes.array,
        optionalBool: React.PropTypes.bool,
        optionalFunc: React.PropTypes.func,
        optionalNumber: React.PropTypes.number,
        optionalObject: React.PropTypes.object,
        optionalString: React.PropTypes.string,
    
    // 所有可以被渲染的对象:数字,
    // 字符串,DOM 元素或包含这些类型的数组。
        optionalNode: React.PropTypes.node,
    
    // React 元素
        optionalElement: React.PropTypes.element,
    
    // 用 JS 的 instanceof 操作符声明 prop 为类的实例。
        optionalMessage: React.PropTypes.instanceOf(Message),
    
    // 用 enum 来限制 prop 只接受指定的值。
        optionalEnum: React.PropTypes.oneOf(['News', 'Photos']),
    
    // 指定的多个对象类型中的一个
        optionalUnion: React.PropTypes.oneOfType([
          React.PropTypes.string,
          React.PropTypes.number,
          React.PropTypes.instanceOf(Message)
        ]),
    
    // 指定类型组成的数组
        optionalArrayOf: React.PropTypes.arrayOf(React.PropTypes.number),
    
    // 指定类型的属性构成的对象
        optionalObjectOf: React.PropTypes.objectOf(React.PropTypes.number),
    
    // 特定形状参数的对象
        optionalObjectWithShape: React.PropTypes.shape({
          color: React.PropTypes.string,
          fontSize: React.PropTypes.number
        }),
    
    // 自定义验证器。如果验证失败需要返回一个 Error 对象。不要直接
    // 使用 `console.warn` 或抛异常,因为这样 `oneOfType` 会失效。
        customProp: function(props, propName, componentName) {
          if (!/matchme/.test(props[propName])) {
            return new Error('Validation failed!');
          }
        }
    

    相关文章

      网友评论

          本文标题:React的组件属性类 propTypes

          本文链接:https://www.haomeiwen.com/subject/mybtvttx.html