리액트에서 웹 페이지를 만들 때 가장 중요한 개념 중 하나는 컴포넌트(Component)입니다.
컴포넌트는 화면에 보여질 HTML 구조를 함수처럼 재사용 가능한 조각으로 만든 것을 의미합니다.
이 글에서는 컴포넌트의 기본 개념, Props의 활용 방법, 그리고 다양한 Prop 문법까지 정리하겠습니다.


1. 컴포넌트(Component)란?

컴포넌트는 화면을 구성하는 작은 단위입니다.
예를 들어, 웹 페이지의 상단 제목과 이미지를 보여주는 Header, 핵심 개념 하나를 보여주는 CoreConcept,

그리고 전체 화면을 감싸는 App이 모두 컴포넌트입니다.

 
function Header() { return ( <header> <h1>React Essentials</h1> </header> ); }
  • Header는 화면의 헤더 부분을 담당합니다.
  • App 컴포넌트에서 Header를 호출하면 화면에 해당 내용이 렌더링됩니다.

2. Props란?

Props(속성)은 부모 컴포넌트가 자식 컴포넌트에게 정보를 전달하는 방법입니다.
Props를 통해 자식 컴포넌트는 부모로부터 받은 데이터를 활용하여 화면을 동적으로 구성할 수 있습니다.

예를 들어 CoreConcept 컴포넌트를 사용할 때:

 
<CoreConcept title="Components" description="The core UI building block." image={componentImg} />
  • title, description, image가 모두 Prop입니다.
  • CoreConcept 컴포넌트 안에서는 props.title, props.description, props.image로 접근하여 사용할 수 있습니다.
 
function CoreConcept(props) { return ( <li> <img src={props.image} alt={props.title} /> <h3>{props.title}</h3> <p>{props.description}</p> </li> ); }

3. 배열과 Props 활용

여러 개의 데이터를 관리할 때는 배열을 활용하면 편리합니다.

export const CORE_CONCEPTS = [ { image: componentsImg, title: 'Components', description: 'The core UI building block.' }, { image: jsxImg, title: 'JSX', description: 'Return HTML(ish) code to define the markup.' }, { image: propsImg, title: 'Props', description: 'Make components configurable by passing input data.' }, { image: stateImg, title: 'State', description: 'React-managed data which triggers UI updates.' }, ];
  • 배열 안의 각 객체를 하나의 CoreConcept으로 사용할 수 있습니다.
  • 화면에 표시할 때는 배열의 각 요소를 Prop으로 전달합니다.
 
<CoreConcept title={CORE_CONCEPTS[0].title}
description={CORE_CONCEPTS[0].description}
image={CORE_CONCEPTS[0].image} />
  • [0]은 배열의 첫 번째 요소를 의미합니다.
  • [1], [2] 등으로 다른 개념들을 순서대로 전달할 수 있습니다.

4. 단일 Prop 객체 전달

여러 Prop을 개별적으로 전달하는 대신 객체 하나로 묶어서 전달할 수도 있습니다.

 
<CoreConcept concept={CORE_CONCEPTS[0]} />
  • CoreConcept 컴포넌트에서는 하나의 Prop만 받습니다.
 
function CoreConcept({ concept }) {
const { title, description, image } = concept;
return ( <li> <img src={image} alt={title} /> <h3>{title}</h3> <p>{description}</p> </li> ); }
  • 이렇게 하면 코드가 훨씬 깔끔해집니다.

5. Rest Property로 그룹화

여러 Prop을 한 번에 Rest Property 문법으로 객체화할 수도 있습니다.

 
function CoreConcept({ ...concept }) { return ( <li> <img src={concept.image} alt={concept.title} /> <h3>{concept.title}</h3> <p>{concept.description}</p> </li> ); }
  • 여러 개의 Prop을 ...concept으로 묶어서 처리할 수 있습니다.
  • 많은 Prop을 다룰 때 매우 유용합니다.

6. 기본 Prop 값(Default Prop)

선택적 Prop이 있을 때는 기본값을 설정할 수 있습니다.

 
function Button({ caption, type = "submit" }) { return <button type={type}>{caption}</button>; }
  • type을 전달하지 않아도 기본값 "submit"이 적용됩니다.
  • caption은 필수이므로 기본값이 없습니다.
 
<Button caption="Click me" /> // type="submit" 자동 적용 <Button type="reset" caption="Reset" /> // type="reset" 적용

7. 마무리

  • 컴포넌트: 화면의 재사용 가능한 조각
  • Props: 부모가 자식에게 데이터를 전달하는 방법
  • 다양한 문법: 단일 객체 전달, Rest Property, 기본값 등

Props를 잘 활용하면, 컴포넌트 재사용성이 높아지고, 코드가 깔끔하고 효율적이 됩니다.
리액트에서 Props를 이해하는 것은 동적 웹 페이지를 만들 때 가장 중요한 기초입니다.

'프로그래밍 > React' 카테고리의 다른 글

배열 함수  (0) 2025.10.07
react 기초  (0) 2025.10.07
Import / Export 문법 복습  (0) 2025.10.01
react, js  (0) 2025.09.24
바닐라 자바스크립트 vs 리액트  (0) 2025.09.22

+ Recent posts