Reactjs-proptypes使用类型之一进行检查

Reactjs-proptypes使用类型之一进行检查,reactjs,react-proptypes,Reactjs,React Proptypes,我希望允许组件具有两种可能的proptype(string或undefined)之一。我正在使用PropTypes.oneOfType来执行此操作 import React from 'react'; import PropTypes from 'prop-types'; Product.propTypes = { productTag: PropTypes.oneOfType([ PropTypes.string, undefined ]), }; Prod

我希望允许组件具有两种可能的proptype(string或undefined)之一。我正在使用PropTypes.oneOfType来执行此操作

import React from 'react';
import PropTypes from 'prop-types';

Product.propTypes = {
    productTag: PropTypes.oneOfType([
        PropTypes.string, undefined
    ]),
};

Product.defaultProps = {
    productTag: undefined
};
这是正确的方法吗?

从“React”导入React;
从“道具类型”导入道具类型;
Product.propTypes={
productTag:PropTypes.oneOfType([
PropTypes.oneOf([undefined,PropTypes.string])
]),
};
或
Product.propTypes={
productTag:PropTypes.oneOfType([
PropTypes.string,
PropTypes.oneOf([未定义])
]),
};
Product.defaultProps={
productTag:未定义

};如果属性未定义,那么这实际上意味着它不存在,也就是说,您试图表达的是
productTag
属性是可选的,但当存在时,它需要是一个字符串。是这样吗

如前所述,“默认情况下,这些都是可选的。”。因此,在这种情况下,您可以简单地使用:

Product.propTypes={
productTag:PropTypes.string
};

由于您没有将其标记为
isRequired

,因此,如果我想在productTag未定义且具有值的情况下呈现元素,如this.props.productTag&&{this.props.productTag}这个组件将作为子组件在几个组件中使用,其中一些组件不向这个组件传递productTag道具,这是我添加propstype和defautProps的主要目的。