不建议直接调用prop-types。 他们现在建议您检查组件的道具,如下所示:

PropTypes.checkPropTypes(MyComponent.propTypes, props, 'prop', 'MyComponent');

但是我需要针对特定​​的prop-type检查特定的值。

例如我有这个代码

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 所以我想检查第一个数组元素是否为字符串,第二个数组元素是否为数字。

也就是说,在这种情况下,我没有一个充满道具类型的对象,也没有一个道具对象。 我要检查一种道具类型和一种值。

我怎样才能做到这一点? API是否不再支持该用例?

  ask by mpen translate from so

本文未有回复,本站智能推荐:

2回复

反应组件中的道具类型检查

我对React中的prop-type有两个问题:1.什么时候应该在组件中使用react props-type检查,我们是否必须在传递了props的所有组件中使用它? 2. props类型检查可以同时应用于无状态组件和类组件吗?
1回复

如何检查任意反应元素变量的道具类型

有没有办法检查反应元素变量的prop类型? 例如,如果我有以下代码: let component = <MyComponent />; 我可以通过以下方式获得道具: component.type.propTypes; // eg => { prop1 : f (),
1回复

如何使用React的prop-types包来检查特定类型的元素?

我想使用 prop-types 专门检查img或svg元素(在顶层)。 我将如何使用库来进行检查或创建自定义道具类型来执行此操作?
2回复

我应该检查什么道具类型来要求来源?

我正在写一个基于react native的项目。 我正在使用prop-types对组件进行类型检查。 现在我想将react-native Image组件包装在我自己的Image组件中。 在以下代码中查看我自己的Image组件: 每个我决定使用自己的Image组件的地方,我都会导入它并使用它,如下所示
2回复

elementType道具类型验证默认值

我想知道elementType道具验证的默认道具类型值是什么。 如果没有传递任何组件,我只想渲染任何内容。
1回复

是否可以在React道具类型上检查道具类型不区分大小写?

我想知道是否有一种方法可以检查 React 中不区分大小写的道具类型。 基本上,解决方案应该替换以下代码。 据我查,prop-types 的官方文档没有解决方案。Brand.propTypes = { name: PropTypes.oneOf([ 'google',
1回复

React中的打字稿:道具类型检查不起作用

我在我的React应用程序中使用Typescript。 我想严格检查传递给组件的道具类型,如果不匹配则抛出错误。 服务道具应该包含金额(以数字形式指定)(通过Interface指定),但是即使我从父组件传递了字符串,它也可以正常工作并且Typescript不会引发错误。 与函数prop
1回复

打字稿中可选的道具类型检查错误

我正在编写 react typescript 并且在可选的prop-types 检查方面有问题。 下面是我的代码: 不知何故,当这样声明时,我的打字稿在 className 中抛出错误。 这是错误: 这看起来很奇怪,因为当我在文档中阅读时, prop-types应该是可选的并接受undefined