假设我的组件有2个道具。
两者都不是必需的,本身,并且您可以根据需要提供两者。 但是您必须至少提供两个道具之一。
PropTypes支持此验证规则吗?
如果是严格的异或怎么办?
注意:我不是在谈论允许两种类型中的一种用于已知道具……这就是我理解的PropTypes.oneOf(['News', 'Photos'])
和PropTypes.oneOfType([...types...])
答案 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`);
}
},
}
您可以添加更多逻辑以指定每个道具是哪种道具