对于我的项目,我们希望在组件道具中传递空值以指示未指定的值(如果你愿意,可以使用#34;已知的未知")。我们团队的惯例是以这种方式使用null。
通过组件propTypes定义,我想要为prop传递一个值,但是如果没有React prop类型验证发出警告,则允许它为null(未定义)。
所以要以i / o风格重申:
如何实现这种行为?
一个想法是写一些替代.isRequired,比如.isDefined不会发出空值警告,但我不知道如何做到这一点而不用分叉或放弃类型库。
答案 0 :(得分:5)
我不确定你是否可以以可连接的方式使它工作(我已经考虑了大约两分钟),但也许你可以使用自定义验证器?
function allowNull(wrappedPropTypes) {
return (props, propName, ...rest) => {
if (props[propName] === null) return null;
return wrappedPropTypes(props, propName, ...rest);
}
}
MyComponent.propTypes = {
nullOrNumber: allowNull(PropTypes.number.isRequired)
};