假设我的Component有2个道具。
如果你愿意的话,这两者都不是必需的,你可以提供两者。但是你必须至少提供两个道具中的一个。
PropTypes是否支持此验证规则?
如果是严格的XOR怎么办?
注意:我不是在谈论允许两种类型中的一种用于已知的道具......这就是我所理解的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`);
}
},
}
您可以添加更多逻辑来指定每个道具的类型