如何针对特定值检查特定的prop类型?

时间:2017-08-15 23:57:44

标签: reactjs react-proptypes

直接调用道具类型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是否不再支持此用例?

0 个答案:

没有答案