# [[Component Composition]] ## ๐Ÿ“Œ Brief Summary ์ปดํฌ๋„ŒํŠธ ํ•ฉ์„ฑ(Component Composition)์€ ์ž‘์€ ์„ ์–ธ์  ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์กฐ๋ฆฝํ•˜์—ฌ ๋” ํฌ๊ณ  ๋ณต์žกํ•œ ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” React์˜ ํ•ต์‹ฌ ํŒจํ„ด์ž…๋‹ˆ๋‹ค [1]. ์ด๋Š” `children` prop์ด๋‚˜ ๋ Œ๋” ํ”„๋กญ(render props)์„ ํ™œ์šฉํ•˜์—ฌ ๋‚ด๋ถ€ ์†Œ์Šค ์ฝ”๋“œ ์ˆ˜์ • ์—†์ด ์ปดํฌ๋„ŒํŠธ์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™(OCP)์„ ์ถฉ์กฑ์‹œํ‚ต๋‹ˆ๋‹ค [2, 3]. ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ํ”„๋ก ํŠธ์—”๋“œ ์•„ํ‚คํ…์ฒ˜(์˜ˆ: Feature-Sliced Design)์—์„œ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ํฌํ•จํ•˜์ง€ ์•Š๊ณ  ํ•˜์œ„ ๋ชจ๋“ˆ๋“ค์„ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ํ•˜์—ฌ UI๋ฅผ ์กฐ๋ฆฝํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋„๋ฆฌ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค [4]. ## ๐Ÿ“– Core Content * **์„ ์–ธ์  UI ์กฐ๋ฆฝ:** React์˜ JSX๋Š” ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ ๊ด€์ ์—์„œ ์ƒ๊ฐํ•˜๋„๋ก ์žฅ๋ คํ•˜๋ฉฐ, ์ƒํƒœ(state)์™€ ํ”„๋กญ์Šค(props)์˜ ์ˆœ์ˆ˜ ํ•จ์ˆ˜๋กœ์„œ UI๋ฅผ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ•ฉ์„ฑ์„ ํ†ตํ•œ ์„ ์–ธ์  ์ ‘๊ทผ์€ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ๊ณผ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ์„ ๋†’์—ฌ์ค๋‹ˆ๋‹ค [1]. * **๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™(OCP)์˜ ๊ตฌํ˜„:** SOLID ์›์น™ ์ค‘ ๊ฐœ๋ฐฉ-ํ์‡„ ์›์น™์€ React์—์„œ ์ปดํฌ๋„ŒํŠธ ํ•ฉ์„ฑ์„ ํ†ตํ•ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ๋Œ€์‹  `children` prop์ด๋‚˜ ๋ Œ๋” ํ”„๋กญ(render props)์„ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด, ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ ๋„ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 3]. * **๊ธฐ๋Šฅ ๋ถ„ํ•  ์„ค๊ณ„(Feature-Sliced Design)์—์„œ์˜ ์—ญํ• :** ํ™•์žฅ์„ฑ์„ ์œ„ํ•œ FSD ์•„ํ‚คํ…์ฒ˜์—์„œ ํ•ฉ์„ฑ์€ ๋ช…ํ™•ํ•œ ์ฑ…์ž„์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. '์œ„์ ฏ(Widgets)' ๋ ˆ์ด์–ด๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ณ , ํ•˜์œ„์˜ '๊ธฐ๋Šฅ(Features)'๊ณผ '์—”ํ‹ฐํ‹ฐ(Entities)'๋ฅผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ๋ธ”๋ก์œผ๋กœ ํ•ฉ์„ฑ(compose)ํ•˜์—ฌ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค [4]. ๊ทธ ์œ„ ๋ ˆ์ด์–ด์ธ 'ํŽ˜์ด์ง€(Pages)'์™€ '์•ฑ(App)' ์—ญ์‹œ ์œ„์ ฏ๋“ค์„ ๋ชจ์•„ ์ „์ฒด ํ™”๋ฉด๊ณผ ๊ธ€๋กœ๋ฒŒ ์„ค์ •์„ ํ•ฉ์„ฑํ•˜๋Š” ์—ญํ• ์„ ๋งก์Šต๋‹ˆ๋‹ค [4, 5]. * **์„œ๋ฒ„ ๋ฐ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ์˜ ํ•ฉ์„ฑ:** Next.js์˜ App Router์™€ ๊ฐ™์€ ์ตœ์‹  ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” React ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ(RSC)๊ฐ€ ์ผ๋ฐ˜ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ์™€ ์›ํ™œํ•˜๊ฒŒ ํ•ฉ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6]. ์ด๋ฅผ ํ†ตํ•ด ์ •์ ์ธ UI๋Š” ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋งํ•˜๊ณ , ์ƒํ˜ธ์ž‘์šฉ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Open/Closed Principle (OCP)]], [[Feature-Sliced Design (FSD)]], [[JSX]], [[React Server Components]] - **Projects/Contexts:** [[Scalable React Architecture]], [[Frontend System Design]] - **Contradictions/Notes:** ์ปดํฌ๋„ŒํŠธ ํ•ฉ์„ฑ์— ๋Œ€ํ•ด ์†Œ์Šค ๊ฐ„์˜ ๋ชจ์ˆœ์ ์€ ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ, ์ œ๊ณต๋œ ์ž๋ฃŒ๋“ค์€ ๋ชจ๋‘ ํ•ฉ์„ฑ์ด ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ์•„ํ‚คํ…์ฒ˜์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ํ•ต์‹ฌ ์›์น™์ด๋ผ๋Š” ์ ์— ๋™์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. --- *Last updated: 2026-04-26*