是否有一种内置的方法来使用原型来确保传递给组件的对象数组实际上是特定形状的对象数组?

也许像这样?

annotationRanges: PropTypes.array(PropTypes.shape({
    start: PropTypes.number.isRequired,
    end: PropTypes.number.isRequired,
})),

我是不是漏了什么特别明显的东西?看来这个会很抢手。

我有一个组件,接收一个道具的大小。道具可以是字符串或数字,例如“LARGE”或17。

我可以让React。PropTypes知道这可以是一个或另一个在PropTypes验证?

如果我不指定类型,我会得到一个警告:

道具类型大小无效;它必须是一个函数,通常是从 React.PropTypes。

MyComponent.propTypes = {
    size: React.PropTypes
}

给定一个呈现其子组件的简单组件:

class ContainerComponent extends Component {
  static propTypes = {
    children: PropTypes.object.isRequired,
  }

  render() {
    return (
      <div>
        {this.props.children}
      </div>
    );
  }
}

export default ContainerComponent;

问:儿童道具的道具类型应该是什么?

当我将它设置为一个对象时,当我使用有多个子组件时,它会失败:

<ContainerComponent>
  <div>1</div>
  <div>2</div>
</ContainerComponent>

警告:失败的道具类型:类型数组的无效道具子元素 提供给ContainerComponent,期望对象。

如果我把它设置为一个数组,如果我只给它一个子数组,它就会失败,即:

<ContainerComponent>
  <div>1</div>
</ContainerComponent>

警告:失败的道具类型:类型对象的无效道具子 提供给ContainerComponent,期望数组。

请建议,我不应该打扰做一个propTypes检查子元素?