React PropTypes:必须至少提供这些道具之一

时间:2019-02-18 16:11:59

标签: reactjs validation react-proptypes

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

两者都不是必需的,本身,并且您可以根据需要提供两者。 但是您必须至少提供两个道具之一。

PropTypes支持此验证规则吗?

如果是严格的异或怎么办?


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

1 个答案:

答案 0 :(得分:5)

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

您可以添加更多逻辑以指定每个道具是哪种道具