[React] 리액트 PropTypes 사용하기
글 작성자: 망고좋아
반응형
🎯 리액트 PropTypes 사용하기
- 컴포넌트의 props에 타입 검사를 하려면 propTypes을 사용해야 한다.
📝 PropTypes 설치 및 import
npm i prop-types
import PropTypes from "prop-types";
import PropTypes from 'prop-types';
const Greeting = () => {
return (
h1>Hello, {this.props.name}</h1>
);
}
}
Greeting.propTypes = {
name: PropTypes.string
};
- prop에 유효하지 않은 값이 전달되었을 때, 경고문이 뜬다.
📝 기본 타입
optionalArray: PropTypes.array,
optionalBool: PropTypes.bool,
optionalFunc: PropTypes.func,
optionalNumber: PropTypes.number,
optionalObject: PropTypes.object,
optionalString: PropTypes.string,
optionalSymbol: PropTypes.symbol,
📝 필수 값 :: isRequired
requiredFunc: PropTypes.func.isRequired,
// 모든 데이터 타입이 가능한 필수값
requiredAny: PropTypes.any.isRequired,
📝 복잡한 배열이나 객체
import PropTypes from 'prop-types';
const Greeting = ({ data }) => {
return (
{data.map(({ name, age }) => {
<span key={name}>Hello, My name is {name}, I'm {age} years old.<span/>
}};
);
}
Greeting.propTypes = {
data: PropTypes.arrayOf(
PropTypes.shape({
name: PropTypes.string.isRequired,
age: PropTypes.number.isRequired
}),
).isRequired
};
📝 그 외
// 랜더링 될 수 있는 것들은 다음과 같습니다.
// 숫자(numbers), 문자(strings), 엘리먼트(elements), 또는 이러한 타입들(types)을 포함하고 있는 배열(array) (혹은 배열의 fragment)
optionalNode: PropTypes.node,
// React 엘리먼트.
optionalElement: PropTypes.element,
// React 엘리먼트 타입 (ie. MyComponent)
optionalElementType: PropTypes.elementType,
// prop가 클래스의 인스턴스임을 선언할 수 있습니다.
// 이 경우 JavaScript의 instanceof 연산자를 사용합니다.
optionalMessage: PropTypes.instanceOf(Message),
// 열거형(enum)으로 처리하여 prop가 특정 값들로 제한되도록 할 수 있습니다.
optionalEnum: PropTypes.oneOf(['News', 'Photos']),
// 여러 종류중 하나의 종류가 될 수 있는 객체
optionalUnion: PropTypes.oneOfType([
PropTypes.string,
PropTypes.number,
PropTypes.instanceOf(Message)
]),
// 특정 타입의 행렬
optionalArrayOf: PropTypes.arrayOf(PropTypes.number),
// 특정 타입의 프로퍼티 값들을 갖는 객체
optionalObjectOf: PropTypes.objectOf(PropTypes.number),
// 특정 형태를 갖는 객체
optionalObjectWithShape: PropTypes.shape({
color: PropTypes.string,
fontSize: PropTypes.number
}),
// 추가 프로퍼티에 대한 경고가 있는 객체
optionalObjectWithStrictShape: PropTypes.exact({
name: PropTypes.string,
quantity: PropTypes.number
}),
🏷 요약
- propTypes의 isRequired 사용 O -> defaultProps 작성 X
- propTypes의 isRequired 사용 X -> defaultProps 작성 O
📌 참고
반응형
'프로그래밍 > React' 카테고리의 다른 글
[React] Do not access Object.prototype method 'hasOwnProperty' from target object. 에러 해결 방법 (0) | 2022.02.17 |
---|---|
[React] 리액트 React.lazy와 Suspense란? (0) | 2022.02.15 |
[React] 리액트 차트 라이브러리 :: Recharts 사용법 (0) | 2022.02.10 |
[React] 리액트 조건부 렌더링 방법 (0) | 2022.02.10 |
[styled-components] 초기 CSS 세팅하기(GlobalStyles, styled-reset, ThemeProvider) (0) | 2022.02.08 |
댓글
이 글 공유하기
다른 글
-
[React] Do not access Object.prototype method 'hasOwnProperty' from target object. 에러 해결 방법
[React] Do not access Object.prototype method 'hasOwnProperty' from target object. 에러 해결 방법
2022.02.17 -
[React] 리액트 React.lazy와 Suspense란?
[React] 리액트 React.lazy와 Suspense란?
2022.02.15 -
[React] 리액트 차트 라이브러리 :: Recharts 사용법
[React] 리액트 차트 라이브러리 :: Recharts 사용법
2022.02.10 -
[React] 리액트 조건부 렌더링 방법
[React] 리액트 조건부 렌더링 방법
2022.02.10