嵌套的PropTypes是否需要isRequired?

时间:2018-01-12 02:17:05

标签: javascript reactjs react-proptypes

说我已经定义了这个PropType:

Component.propTypes = {
  complicatedData: PropTypes.arrayOf(
    PropTypes.shape({
      name: PropTypes.string,
      data: PropTypes.arrayOf(PropTypes.number)
    })
  ).isRequired,
};

如果需要该数据结构,那么嵌套结构的每个级别所需的isRequired是否必需,或者最后的顶级isRequired是否包含内部的所有内容?

1 个答案:

答案 0 :(得分:1)

顶级isRequired仅检查是否提供了complicatedData且是否为数组。你可以给它一个包含空对象的数组,例如[{}, {}],它会根据你的代码传递测试。

如果您希望数组complicatedData中的每个元素都具有name属性,那么您需要编写:

Component.propTypes = {
  complicatedData: PropTypes.arrayOf(
    PropTypes.shape({
      name: PropTypes.string.isRequired,
      data: PropTypes.arrayOf(PropTypes.number)
    })
  ).isRequired,
};

如果您希望每个元素都具有data属性,则相同。