React/기초

리액트[기초] propTypes

뿌비 2022. 5. 27. 00:59
728x90

propTypes 이란?

  • 컴포넌트의 필수 props를 지정하거나 props의 타입을 지정할 때 사용한다

propTypes 지정하는 방법 

1.  코드 상단에 prop-types를 import 해준다

2. 컴포넌트에서 설정해준다(정한 값은 전달될 때 무조건 설정한 형태로  전달되어야 한다)

// 자식 컴포넌트
import PropTypes from 'prop-types';

const MyComponent = ({ name, children }) => { 생략.. }

MyComponent.defaultProps = {
	name: '기본 이름'
};

// name 은 무조건 문자열(string)형태로만 전달해야된다
MyComponent.propTypes = {
	name: PropTypes.string
};

export default MyComponent;

// 부모 컴포넌트(string 값으로 전달 된 올바른 예)
import MyComponent from './MyComponent';
const App = () => {
	return <MyComponent name={"hi"} >하이</MyComponent >;
};
 export default App;

// 부모 컴포넌트(string 형태여야 하는데 name이 number 형태로 잘못된 예)
import MyComponent from './MyComponent';
const App = () => {
	return <MyComponent name={10} >하이</MyComponent >;
};
export default App;

isRequired를 사용해서 필수  propTypes 설정

  • isRequired는 propTypes를 지정하지 않았을 때 console에 경고 메시지를 띄워주고 싶을 때 사용한다
  • propTypes를 지정할 때 뒤에 isRequired를  붙여주면 된다 
// 자식 컴포넌트
import PropTypes from 'prop-types';

const MyComponent = ({ name, favoriteNumber ,children }) => { 
   return(
   // 다른 부분은 생략..
   좋아하는 숫자는 {favoriteNumber} 입니다.
);
}

MyComponent.defaultProps = {
	name: '기본 이름'
};

// name 은 무조건 문자열(string)형태로만 전달해야된다
MyComponent.propTypes = {
	name: PropTypes.string
    favoriteNumber:PropTypes.number.isRequired
};

export default MyComponent;

/* 
isRequired 를 사용 했으면 부모 컴포넌트에서 
favoriteNumber 값을 전달 해주어야한다 해주지 않으면 않으면 오류가 난다 
*/
import MyComponent from './MyComponent';
const App = () => {
	return (
    <MyComponent name="React" favoriteNumber = {10} >
    하이
    </MyComponent >
   );
};
 export default App;

propTypes 종류

[참고] https://github.com/facebook/prop-types 

 

propTypes 에서는 여러가지 종류를 설정 할 수 있다 
array 배열 
arrayOf 특정propType 으로 이루워진 배열을 의미한다. 예를 들어 arrayOf(PropTypes.number) 는 숫자로 이루어진 배열이다 
bool true 혹은 false 의 값 
func  함수
number 숫자 
object 객체
string 문자열
symbol Es6의 Symbol
node 렌더링 할 수 있는 모든것(숫자, 문자열, 혹은 JSX 코드, children도 node PropType 이다)
instanceOf (클래스) 특정 클래스의 인스턴스 (예 : instanceOf(MyClass))
oneOf (['dog' , 'cat' ]) 주어진 배열 요소 중 값 하나
oneOfType ([ React.PropTypes.string, PropTypes.number]) 주어진 배열 안의 종류 중 하나
objectOf( React.PropTypes.number) 객체의 모든 키 값이 인자로 주어진 PropType 인 객체 
shape ({ name: PropTypes.string, num:PropTypes.number }) 주어진 스키마를 가진 객체
any 아무 종류

 

728x90