React PropTypes:必须至少提供其中一个道具

React PropTypes: At least one of these props must be provided

假设我的组件有 2 个道具。

两者都不是必需的,本身,如果您愿意,可以同时提供两者。 但是您至少需要提供两个道具中的一个。

PropTypes 是否支持此验证规则?

如果是严格异或怎么办?


注意:我不是在谈论允许两种 类型 中的一种用于已知道具......这是我理解的 PropTypes.oneOf(['News', 'Photos'])PropTypes.oneOfType([...types...]) 待谈。

PropTypes 允许提供自定义验证,您可以在其中编写自己的逻辑和自己的错误,例如

MyComponent.propTypes = {
  News: (props, propName, componentName) => {
    if (!props.News && !props.Photos) {
      return new Error(`One among News or Photos prop must be provided`);
    }
  },

  Photos: (props, propName, componentName) => {
    if (!props.News && !props.Photos) {
      return new Error(`One among News or Photos prop must be provided`);
    }
  },
}

您可以添加进一步的逻辑来指定它们中的每一个是什么类型的道具