본문 바로가기
Frontend/React

Props 개념, 컴포넌트 재사용

by 삐뚤비버 2025. 7. 19.

1. Props 정리

정의

  • Props = Properties의 줄임말
  • 부모 컴포넌트 → 자식 컴포넌트로 데이터를 전달하는 방법
  • React의 핵심 특징인 단방향 데이터 흐름을 담당
  • 읽기 전용(immutable) 데이터 → 자식 컴포넌트에서 수정 불가

특징

 

특징 설명
단방향 데이터 흐름 부모 → 자식으로만 전달
읽기 전용 전달받은 데이터는 변경 불가
다양한 데이터 전달 문자열, 숫자, 배열, 객체, 함수 등
데이터 확인 props를 콘솔로 확인 가능
 

기본 예시

function Header(props) {
  console.log('props', props.title);
  return (
    <header>
      <h1>{props.title}</h1>
    </header>
  );
}

function App() {
  return <Header title="React 시작" />;
}

 

컴포넌트 재사용 예시

function Button(props) {
  return <button>{props.text}</button>;
}

function App() {
  return (
    <div>
      <Button text="로그인" />
      <Button text="회원가입" />
      <Button text="취소" />
    </div>
  );
}

같은 컴포넌트를 props만 다르게 전달해 다양한 역할 수행

 

 


2. Props 배열 전달

개요

  • props를 통해 배열(리스트) 데이터를 전달할 수 있음
  • 전달받은 배열을 반복문 또는 **map()**으로 렌더링

예시

function Nav(props) {
  const lis = [];
  for(let i = 0; i < props.topics.length; i++) {
    let t = props.topics[i];
    lis.push(
      <li key={t.id}>
        <a href={'/read/' + t.id}>{t.title}</a>
      </li>
    );
  }
  return (
    <nav>
      <ol>{lis}</ol>
    </nav>
  );
}

function App() {
  const topics = [
    {id:1, title:'html', body:'html is...'},
    {id:2, title:'css', body:'css is...'},
    {id:3, title:'javascript', body:'js is...'}
  ];

  return <Nav topics={topics} />;
}

key 속성의 필요성

  • 반복문에서 요소를 렌더링할 때 key 속성 필수
  • key는 각 항목의 고유 식별자(id) 사용
  • key 없으면 콘솔에 경고 발생

3. React.js Props

Props의 데이터 유형

  • 문자열, 숫자, 불린
  • 객체
  • 배열
  • 함수 (이벤트 핸들러 전달 시 유용)

예시: 함수 전달

function Child(props) {
  return <button onClick={props.onClick}>클릭</button>;
}

function App() {
  const handleClick = () => {
    alert('클릭됨');
  };

  return <Child onClick={handleClick} />;
}

Props의 불변성

  • props는 수정할 수 없음
  • 값을 변경하고 싶으면 부모 컴포넌트에서 새로운 값을 전달해야 함

요약

구분 설명
Props 정리 부모 → 자식으로 데이터 전달, 읽기 전용
Props 배열 전달 props로 배열 전달, 반복 렌더링, key 필수
React.js Props props의 다양한 데이터 타입, 함수 전달 가능

 

참조

- 이고잉 [생활코딩! React 리액트 프로그래밍 ] 

'Frontend > React' 카테고리의 다른 글

React State  (0) 2025.07.19
이벤트 핸들링  (1) 2025.07.19
React 컴포넌트 개념과 작성법 정리  (0) 2025.07.19
React 앱 배포 (빌드 & 서버 실행)  (0) 2025.07.19
React 디렉토리 구조 이해  (0) 2025.07.19

me