直接调用道具类型deprecated。他们现在建议您检查一下这样的组件道具:
PropTypes.checkPropTypes(MyComponent.propTypes, props, 'prop', 'MyComponent');
但我需要针对特定的道具类型检查特定值。
e.g。我有this code:
export function tuple(...types) {
return requirable(function(props, propName, componentName, location, propFullName) {
let value = props[propName];
if(!location) {
location = 'prop';
}
if(!propFullName) {
propFullName = propName;
}
if(!Array.isArray(value)) {
throw new Error(`Invalid ${location} \`${propFullName}\` supplied to \`${componentName}\`, expected ${types.length}-element array`);
}
if(value.length !== types.length) {
throw new Error(`Invalid ${location} \`${propFullName}\` supplied to \`${componentName}\`, expected ${types.length}-element array, got array of length ${value.length}`);
}
for(let i = 0; i < value.length; ++i) {
if(!types[i](value[i])) {
throw new Error(`Invalid ${location} ${propFullName}[${i}] supplied to \`${componentName}\`, unexpected type`);
}
}
return null;
});
}
在那里它确实
if(!types[i](value[i])) {
types[i]
可能与PropTypes.string
类似。所以我想检查第一个数组元素是否是一个字符串,第二个数组元素是一个数字。
即,在这种情况下,我没有一个充满道具类型的对象,也没有道具对象。我有一个 prop-type和一个值我要检查。
我该怎么做? API是否不再支持此用例?