React PropTypes: разрешить различные типы Проптипов для одной опоры

у меня есть компонент, который получает опору для своего размера. Опора может быть либо строкой, либо числом ex:"LARGE" или 17.

могу ли я позволить реагировать.Проптипы знают, что это может быть либо один, либо другой в проверке проптипов?

если я не укажу тип, я получу предупреждение:prop type `size` is invalid; it must be a function, usually from React.PropTypes.

MyComponent.propTypes = {
    size: React.PropTypes
}

4 ответов


size: PropTypes.oneOfType([
  PropTypes.string,
  PropTypes.number
]),

подробнее: Проверка Типов С Помощью PropTypes


Это может сработать для вас:

height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),

для целей документации лучше перечислить строковые значения, которые являются законными:

size: PropTypes.oneOfType([
    PropTypes.number,
    PropTypes.oneOf([ 'SMALL', 'LARGE' ]),
]),

import React from 'react';              <--as normal
import PropTypes from 'prop-types';     <--add this as a second line

    App.propTypes = {
        monkey: PropTypes.string,           <--omit "React."
        cat: PropTypes.number.isRequired    <--omit "React."
    };

    Wrong:  React.PropTypes.string
    Right:  PropTypes.string