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

问题描述 投票:2回答:1

假设我的Component有2个道具。

如果你愿意的话,这两者都不是必需的,你可以提供两者。但是你必须至少提供两个道具中的一个。

PropTypes是否支持此验证规则?

如果是严格的XOR怎么办?


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

reactjs validation react-proptypes
1个回答
6
投票

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`);
    }
  },
}

您可以添加更多逻辑来指定每个道具的类型

© www.soinside.com 2019 - 2024. All rights reserved.