React5분
component 와 props
2024년 11월 17일
1. 💡 컴포넌트(Component)란?
🔹 정의
React에서 UI를 구성하는 최소 단위이며, 재사용 가능한 독립적인 블록입니다.
하나의 컴포넌트는 HTML, CSS, JS를 하나로 묶어 특정 기능이나 뷰를 담당합니다.
✅ 즉, 컴포넌트를 조립하여 전체 UI를 구성합니다.

image.png

image.png
🔹 종류
-
함수형 컴포넌트 (Function Component)
- 가장 많이 사용됨
- React Hooks를 통해 상태 관리 가능
javascriptfunction Welcome(props) { return <h1>Hello, {props.name}</h1>; }
-
클래스형 컴포넌트 (Class Component)
- 예전 방식 (React Hooks 이전)
state
,lifecycle methods
사용 가능
javascriptclass Welcome extends React.Component { render() { return <h1>Hello, {this.props.name}</h1>; } }
⚠️ 현재는 함수형 컴포넌트 + Hooks 방식이 표준입니다.
🔹 특징
- 재사용 가능: 한 번 만들면 여러 곳에서 재사용 가능
- 분리 및 관리 용이: 각 기능 단위로 컴포넌트를 나눠 관리
- 트리 구조로 구성됨: 부모-자식 관계로 중첩 가능
javascriptfunction Article() {
return (
<>
<Trips/>
</>
)
}
javascriptfunction App() {
return (
<>
<Header/>
<Nav/>
<Article/>
</>
)
}
2. 📦 Props란?
🔹 정의
Props는 "properties(속성)"의 줄임말로,
부모 컴포넌트가 자식 컴포넌트에 값을 전달할 때 사용하는 데이터 전달 수단입니다.
✅ 컴포넌트 외부에서 내부로 데이터를 전달할 수 있는 단방향 데이터 흐름을 따릅니다.
🔹 사용 방법
부모 컴포넌트에서 전달:
javascript<Article name="React" />
자식 컴포넌트에서 받기:
javascriptfunction Article(props) {
return <h1>Hello, {props.name}</h1>;
}
🔹 구조 분해 할당으로 props 받기
javascriptconst user = {
nick: "hong",
name: "gildong"
};
// 1. 기존 방식
const name = user.name;
const nick = user.nick;
// 2. 구조 분해 할당
const {nick, name} = user;
javascriptfunction Welcome({ name }) {
return <h1>Hello, {name}</h1>;
}
🔹 특징
- 읽기 전용(Read-only): 자식 컴포넌트에서는 props를 직접 수정할 수 없음
- 유연한 데이터 전달: 문자열, 숫자, 배열, 객체, 함수 등 어떤 값이든 전달 가능
- 조건부 렌더링에 활용 가능
🔹 예제: 컴포넌트 + props 통합 예시
javascriptfunction Profile({ name, age }) {
const ButtonProps = {
name:"xxx",
age:20,
a="a",
b="b"
}
return (
<div>
<Button {...ButtonProps} />
<h2>{name}님</h2>
<p>나이: {age}세</p>
</div>
);
}
function Button ({name, age, a, b}) {
return (
<div>
<h1>{name}</h1> //xxx
<p>{age}</p> //20
...
</div>
)
}
function App() {
return <Profile name="홍길동" age={20} />;
}
✅ 자식 요소 렌더링
javascriptfunction MyComponent({children}) {
return (
<div>
<h1>타이틀</h1>
{children}
</div>
);
}
✅ 사용 예시
javascript<MyComponent>
<p>이 부분이 children입니다</p>
</MyComponent>
렌더링 결과:
html<div>
<h1>타이틀</h1>
<p>이 부분이 children입니다</p>
</div>
3. 📌 요약
항목 | 설명 |
---|---|
컴포넌트 | UI의 재사용 가능한 블록, 독립적 단위 |
Props | 부모 → 자식으로 데이터를 전달하는 방식, 읽기 전용 |
단방향 흐름 | 데이터는 항상 부모에서 자식으로만 흐름 |
Hooks | 함수형 컴포넌트에서 상태 관리 및 라이프사이클 제어 가능 (useState , useEffect 등) |
✅ Tip: props vs state
항목 | props | state |
---|---|---|
정의 | 부모가 자식에게 전달 | 컴포넌트 내부에서 관리 |
수정 | 자식이 수정 불가 | setState / useState로 변경 가능 |
목적 | 외부 데이터 전달 | 내부 상태 관리 |
태그
#React