React PropTypes : 하나의 prop에 다른 타입의 PropType을 허용


244

크기에 맞는 소품을받는 구성 요소가 있습니다. prop은 문자열 또는 숫자 ex : "LARGE"또는 17입니다.

propTypes 유효성 검사에서 React.PropTypes가이 중 하나 일 수 있음을 알 수 있습니까?

유형을 지정하지 않으면 경고가 표시됩니다. prop type `size` is invalid; it must be a function, usually from React.PropTypes.

MyComponent.propTypes = {
    size: React.PropTypes
}

답변:


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

자세히 알아보기 : PropType을 사용한 유형 검사


덕분에 클래스에서 정적 Proptypes를 설정하는 Jest 테스트를 실행할 때 임의의 오류가 발생합니다 ReferenceError: oneOfType is not defined. 미리 감사드립니다 !!
Sara Inés Calderón

U를 올바르게 가져 import PropTypes from 'prop-types';왔습니까?
Paweł Andruszków

파블가 헤이 - 예, 이것은 우리가 가져올 방법은 다음과 같습니다import PropTypes from 'prop-types';
사라 아이 네스 칼데론

1
2019 - 사용 PropTypes.oneOf
Imdad

26

문서화를 위해 유효한 문자열 값을 나열하는 것이 좋습니다.

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

11

이것은 당신을 위해 일할 수 있습니다 :

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

1
이 코드는 질문에 대답 할 수 있지만,이 코드가 질문에 응답하는 이유 및 / 또는 방법에 대한 추가 컨텍스트를 제공하면 장기적인 가치가 향상됩니다.
rollstuhlfahrer

-4
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

16
그렇습니다. PropTypes는 현재 자체 패키지에 포함되어 있지만 질문에 대답하지 않습니다 ...
Kevin Amiranoff

1
질문에 완전히 관련이없는
jalooc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.