[React] Props

dnjstjt12·2024년 12월 20일

Props

컴포넌트에서 속성을 설정할 때 사용하는 요소로, 부모 컴포넌트에서 자식 컴포넌트에서 데이터를 전달할 때 사용한다.
읽기 전용 데이터로 자식 컴포넌트에서 변경할 수 없다.

Props값을 설정하는 법을 알아보기 위해 다음의 코드를 살펴보자.

//App.js 파일
import ComponentTest from './ComponentTest';

const App = () => {
  return <ComponentTest name = "react" year={9999}>만나서 반갑습니다.</ComponentTest>;
}

export default App;
//ComponentTest.js 파일
import Proptypes from 'prop-types'

const ComponentTest = props =>{
    const {name, year, children} = props

    return (
        <div>
            안녕하세요 저는{name}입니다.<br/>
            나이는 {year}입니다.<br/>
            {children}
        </div>
    );
}

ComponentTest.propTypes = {
    name: Proptypes.string,
    year: Proptypes.number.isRequired
}


export default ComponentTest;

코드 동작과정
1. App.js파일에서 ComponentTest컴포넌트에 Props를 전달한다.

const App = () => {
  return <ComponentTest name = "react" year={9999}>만나서 반갑습니다.</ComponentTest>;
}
  • name과 year을 설정하여 값을 전달한다.

  • children Prop: 만나서 반갑습니다.와 같이 컴포넌트 태그 사이에 작성된 내용은 자동으로 children이라는 이름의 Props로 전달된다.

2. ComponentTest컴포넌트에서 props사용해 데이터를 추출한다.

const {name, year, children} = props;
  • Props 구조 분해 할당: const {name, year, children} = props로 구조 분해 할당을 통해 코드를 작성한다.

  • 전달받은 Props는 {name}, {year}와 같이 JavaScript 표현식을 통해 JSX 내부에서 사용할 수 있다.

  • 구조분해를 사용하지 않고 {props.name}, {props.year}, {props.children}을 사용해 Props값을 출력할 수 있지만 편의상 구조분해를 사용했다.

3. PropTypes로 Props를 검증할 수있다.

prop-types 패키지를 사용하여 전달받은 Props의 유형(type)과 필수 여부를 지정할 수 있다.

ComponentTest.propTypes = {
    name: Proptypes.string,
    year: Proptypes.number.isRequired
};
  • propTypes 속성: 컴포넌트가 받는 Props의 타입을 지정한다.
    name: 문자열(string) 타입이어야 한다.
    year: 숫자(number) 타입이며, isRequired가 있어서 반드시 전달되어야 한다.

  • Props 검증 효과: Props 타입이 맞지 않거나 필수 Props가 누락되면 콘솔에 경고가 표시된다.

profile
안녕하세요!

0개의 댓글