일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- spring
- Photoshop
- 알고리즘
- 강화학습
- c++
- 반응형 웹
- react
- Javascript
- 확률
- 포토샵
- c
- pandas
- 소수
- JSX
- 수학
- 상태
- SK바이오사이언스
- grid
- Gap
- box-sizing
- 통신사할인
- transform
- float
- skt membership
- stl
- Codility
- 백준
- CSS
- 미디어 쿼리
- REM
- Today
- Total
sliver__
JSX에서 재사용 가능한 컴포넌트를 만드는 핵심 원칙: 구성 요소 구성(Component Composition) 본문
JSX에서 재사용 가능한 컴포넌트를 만드는 핵심 원칙: 구성 요소 구성(Component Composition)
sliver__ 2025. 6. 15. 14:40React 개발을 하다 보면 반복적으로 등장하는 UI 요소들을 재사용 가능한 컴포넌트로 만들고 싶어지게 됩니다. 이번 글에서는 그런 상황에서 꼭 알아야 할 개념, 바로 **구성 요소 구성(Component Composition)**에 대해 알아보겠습니다.
구성 요소 구성(Component Composition)이란?
React에서는 컴포넌트를 다른 컴포넌트 안에 포함시킬 수 있습니다. 예를 들어, Modal이라는 컴포넌트 안에 SuccessMessage를 넣는 식이죠:
<Modal>
<SuccessMessage />
</Modal>
이처럼 JSX에서는 컴포넌트를 중첩해서 사용하는 것이 매우 자연스럽고 흔한 방식입니다. 하지만 여기서 재사용성이라는 관점에서 한 가지 중요한 문제가 발생합니다.
문제: 깊게 결합된 컴포넌트 구조
아래 예제를 생각해 봅시다.
function App() {
return (
<Modal>
<SuccessMessage />
</Modal>
);
}
여기에서 Modal은 SuccessMessage를 자식으로 가지며, 둘은 강하게 결합되어 있습니다. 만약 ErrorMessage를 표시하고 싶다면 새로운 ModalWithError 컴포넌트를 만들어야 할까요? 이런 방식은 중복과 유지보수의 어려움을 초래합니다.
해결책: children props를 활용한 구성 요소 구성
이 문제를 해결하기 위해 사용하는 기술이 바로 **구성 요소 구성(Component Composition)**입니다. 핵심은 컴포넌트 내부에 자리를 남겨두고, children props를 활용해 외부에서 어떤 내용을 넣을지 결정하는 것입니다.
function Modal({ children }) {
return (
<div className="modal">
{children}
</div>
);
}
<Modal>
<SuccessMessage />
</Modal>
<Modal>
<ErrorMessage />
</Modal>
구성 요소 구성의 장점
- 재사용성 향상
- Modal 하나만 정의해두면, 어떤 메시지든 구성할 수 있습니다.
- 유연한 조합 가능
- SuccessMessage, ErrorMessage, 혹은 커스텀 레이아웃까지 다양한 형태로 조합 가능합니다.
- Props Drilling 문제 해결에 도움
- 다음에 다룰 레이아웃 구성에서 자식 요소를 유연하게 넘길 수 있어 props drilling을 줄일 수 있습니다.
구성 요소 구성이 필요한 순간
- 재사용 가능한 UI 레이아웃이나 팝업 등을 만들 때
- 컴포넌트 내부의 자식 요소가 고정되지 않고 외부에서 결정되어야 할 때
- 더 깔끔하고 유지보수가 쉬운 컴포넌트 구조를 원할 때
마무리
구성 요소 구성(Component Composition)은 React 컴포넌트 설계에서 가장 중요한 원칙 중 하나입니다. children props를 잘 활용하면 중복을 줄이고, 더 나은 구조의 컴포넌트를 만들 수 있습니다. 다음 글에서는 이 구성이 레이아웃 설계에서 어떻게 쓰이는지를 구체적인 예제와 함께 다뤄보겠습니다.
'Frontend > React' 카테고리의 다른 글
React에서의 상태 관리(State Management) 핵심 가이드 (0) | 2025.06.07 |
---|---|
JSX를 처음 접할 때 반드시 알아야 할 핵심 규칙 정리 (0) | 2025.06.03 |
React의 Props: 단순 전달 이상의 의미 (0) | 2025.06.03 |
React는 왜 HTML, CSS, JS를 한 곳에 모았을까? (0) | 2025.06.03 |
JSX란 무엇이며, 왜 React에서 중요한가? (0) | 2025.06.03 |