Props란 무엇인가?

Props는 **”properties”**의 줄임말로,
부모 컴포넌트가 자식 컴포넌트에게 값을 전달할 때 사용하는 읽기 전용 데이터입니다.

비유하자면 Props는 택배 상자입니다. 부모가 만든 상자를 자식에게 전달하고, 자식은 그 안의 내용을 사용만 합니다.


기본 사용법

Step 1. 자식 컴포넌트에서 props를 받아 사용

function Welcome(props) {
  return <h1>안녕하세요, {props.name}님!</h1>;
}

Step 2. 부모 컴포넌트에서 값을 전달

function App() {
  return <Welcome name="지피" />;
}

결과:

안녕하세요, 지피님!

비구조화 할당으로 더 깔끔하게

function Welcome({ name }) {
  return <h1>안녕하세요, {name}님!</h1>;
}

자주 쓰는 방식이며 props.name보다 코드가 간결합니다.


여러 개의 Props 전달

function Profile({ name, job }) {
  return (
    <div>
      <h2>{name}</h2>
      <p>{job}</p>
    </div>
  );
}

function App() {
  return <Profile name="지피" job="AI 개발자" />;
}

JSX 안에서 동적 사용

function Badge({ level }) {
  return <span className={level === 'high' ? 'red' : 'blue'}>{level}</span>;
}

Props는 읽기 전용 (수정 불가)

function WrongExample(props) {
  props.name = "민수"; // ❌ 이렇게 직접 수정하면 안 됨
}

props를 수정하려면 상위 컴포넌트에서 상태(state)를 변경한 뒤 다시 전달해야 합니다.
즉, props는 “읽기 전용” 데이터입니다.


defaultProps (기본값 설정)

function Greeting({ name = "익명" }) {
  return <h1>안녕하세요, {name}님!</h1>;
}

또는 ES6 이전 방식:

Greeting.defaultProps = {
  name: "익명"
};

실전 예제

// components/UserCard.js
function UserCard({ username, email }) {
  return (
    <div>
      <h3>{username}</h3>
      <p>{email}</p>
    </div>
  );
}

// App.js
function App() {
  return (
    <div>
      <UserCard username="지피" email="gpt@example.com" />
      <UserCard username="민수" email="minsu@example.com" />
    </div>
  );
}

정리 요약

항목설명
정의부모 → 자식 컴포넌트로 데이터 전달 방식
형식<컴포넌트 속성명="값" />
사용법자식 컴포넌트의 매개변수 또는 props.속성명
읽기 전용 여부수정 불가, 상태는 useState로 관리
기본값 지정 방법defaultProps 또는 매개변수의 기본값

Comments

So empty here ... leave a comment!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Sidebar