zoukankan      html  css  js  c++  java
  • prop中增加限制与默认prop

    注 : React.PropTypes 在 React v15.5 版本后已经移到了 prop-types 库。

    import PropTypes from 'prop-types'
     
    render(){
            return (
                <div>
                   <div>111</div>
          //子组件可以{...this.props}这样获取到当前组件的父组件传来的所有props
                   <Child {...this.props}></Child>
                </div>
            )
        }
    // 定义一个默认的props
    const defaultProps = {
        userId:111111111
    }

    CompontentsName.propTypes = { userId: PropTypes.number.isRequired }
    // 将定义的props传进去
    CompontentsName.defaultProps = defaultProps;
    //更多验证器说明如下 : 
    MyComponent.propTypes = {
        // 可以声明 prop 为指定的 JS 基本数据类型,默认情况,这些数据是可选的
        optionalArray: PropTypes.array,
        optionalBool:PropTypes.bool,
        optionalFunc:PropTypes.func,
        optionalNumber:PropTypes.number,
        optionalObject:PropTypes.object,
        optionalString:PropTypes.string,
     
        // 可以被渲染的对象 numbers, strings, elements 或 array
        optionalNode:PropTypes.node,
     
        //  React 元素
        optionalElement:PropTypes.element,
     
        // 用 JS 的 instanceof 操作符声明 prop 为类的实例。
        optionalMessage:PropTypes.instanceOf(Message),
     
        // 用 enum 来限制 prop 只接受指定的值。
        optionalEnum:PropTypes.oneOf(['News', 'Photos']),
     
        // 可以是多个对象类型中的一个
        optionalUnion:PropTypes.oneOfType([
         PropTypes.string,
         PropTypes.number,
         PropTypes.instanceOf(Message)
        ]),
     
        // 指定类型组成的数组
        optionalArrayOf:PropTypes.arrayOf(PropTypes.number),
     
        // 指定类型的属性构成的对象
        optionalObjectOf:PropTypes.objectOf(PropTypes.number),
     
        // 特定 shape 参数的对象
        optionalObjectWithShape:PropTypes.shape({
          color:PropTypes.string,
          fontSize:PropTypes.number
        }),
     
        // 任意类型加上 `isRequired` 来使 prop 不可空。
        requiredFunc:PropTypes.func.isRequired,
     
        // 不可空的任意类型
        requiredAny:PropTypes.any.isRequired,
     
        // 自定义验证器。如果验证失败需要返回一个 Error 对象。不要直接使用 `console.warn` 或抛异常,因为这样 `oneOfType` 会失效。
        customProp: function(props, propName, componentName) {
          if (!/matchme/.test(props[propName])) {
            return new Error('Validation failed!');
          }
        }
      }
    }
  • 相关阅读:
    iOS5.1下emoji表情显示方框的解决办法
    iPhone处理图片(UIImage扩展类) 自动适应frame大小方法
    10个必需的iOS开发工具和资源
    转一篇:iOSOpenDev环境搭建以及使用
    自定义UITabbarController引发的血案
    (转) iphone开发资源汇总
    分类分享一下,关于push推送的经验吧
    关于IPHONE的设计模式
    IOS自动化打包介绍
    带有可变参数表的简化的printf函数
  • 原文地址:https://www.cnblogs.com/chenlw/p/13231119.html
Copyright © 2011-2022 走看看