zoukankan      html  css  js  c++  java
  • react使用 PropTypes 和 getDefaultProps()

    一定要写PropTypes,切莫为了省事而不写
    如果一个Props不是requied,一定在getDefaultProps中设置它
    React.PropTypes主要用来验证组件接收到的props是否为正确的数据类型,如果不正确,console中就会出现对应的warning。出于性能方面的考虑,这个API只在开发环境下使用。

    基本使用方法:

    propTypes: {
        myArray: React.PropTypes.array,
        myBool: React.PropTypes.bool,
        myFunc: React.PropTypes.func,
        myNumber: React.PropTypes.number,
        myString: React.PropTypes.string,
         
         // You can chain any of the above with `isRequired` to make sure a warning
        // is shown if the prop isn't provided.
        requiredFunc: React.PropTypes.func.isRequired
    }
    

    假如我们props不是以上类型,而是拥有复杂结构的对象怎么办?比如下面这个:

    {
      text: 'hello world',
      numbers: [5, 2, 7, 9],
    }
    

    当然,我们可以直接用React.PropTypes.object,但是对象内部的数据我们却无法验证。

    propTypes: {
      myObject: React.PropTypes.object,
    }
    

    进阶使用方法:shape() 和 arrayOf()

    propTypes: {
      myObject: React.PropTypes.shape({
        text: React.PropTypes.string,
        numbers: React.PropTypes.arrayOf(React.PropTypes.number),
      })
    }
    

    下面是一个更复杂的Props:

    [
      {
        name: 'Zachary He',
        age: 13,
        married: true,
      },
      {
        name: 'Alice Yo',
        name: 17,
      },
      {
        name: 'Jonyu Me',
        age: 20,
        married: false,
      }
    ]
    

    综合上面,写起来应该就不难了:

    propTypes: {
        myArray: React.PropTypes.arrayOf(
            React.propTypes.shape({
                name: React.propTypes.string.isRequired,
                age: React.propTypes.number.isRequired,
                married: React.propTypes.bool
            })
        )
    }
    
  • 相关阅读:
    拟阵学习笔记
    HNOI 2016 解题报告
    HNOI 2015 解题报告
    一类动态规划问题状态的简化
    组合数学学习笔记
    简单多项式学习笔记
    基础线代学习笔记
    后缀数据结构学习笔记
    图论学习笔记
    AT3673 [ARC085D] NRE 题解
  • 原文地址:https://www.cnblogs.com/Lewiskycc/p/7411326.html
Copyright © 2011-2022 走看看