# [[Client Components|Client Components]] ## ๐Ÿ“Œ Brief Summary ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ(Client Components)๋Š” ๋ชจ๋˜ React ์•„ํ‚คํ…์ฒ˜(์˜ˆ: [[Next.js 15 App Router|Next.js 15 App Router]])์—์„œ `'use client'` ์ง€์‹œ์–ด๋กœ ์ •์˜๋˜๋ฉฐ ์ „ํ†ต์ ์ธ React ์ปดํฌ๋„ŒํŠธ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” UI ์š”์†Œ์ด๋‹ค [1]. ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ์™€ ๋‹ฌ๋ฆฌ ํด๋ผ์ด์–ธํŠธ ์ธก ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ์ƒํƒœ([[State|State]]) ๊ด€๋ฆฌ, ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ ์ƒํ˜ธ์ž‘์šฉ์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ € API๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ ํ•„์ˆ˜์ ์œผ๋กœ ์ ์šฉ๋œ๋‹ค [1, 2]. ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ํ”„๋ก ํŠธ์—”๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ž‘๊ณ  ๊ธฐ๋Šฅ์ ์œผ๋กœ ์ง‘์ค‘๋œ ํ˜•ํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ ์›์น™์ด๋‹ค [2, 3]. ## ๐Ÿ“– Core Content * **๊ฒฝ๊ณ„ ์„ค์ • ๋ฐ ํ•˜์ด๋“œ๋ ˆ์ด์…˜([[Hydration|Hydration]]):** ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋Š” ์ตœ์ƒ๋‹จ์— `'use client'` ์ง€์‹œ์–ด๋ฅผ ์„ ์–ธํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์ธก ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹œ์ž‘๋˜๋Š” ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ํ‘œ์‹œํ•œ๋‹ค [1]. ์„œ๋ฒ„๊ฐ€ ๋ Œ๋”๋งํ•œ ์ •์  HTML์— React๊ฐ€ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์™€ ์ƒํƒœ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ธ ํ•˜์ด๋“œ๋ ˆ์ด์…˜(Hydration)์€ [[Next.js 15|Next.js 15]] ๊ธฐ์ค€์œผ๋กœ ์˜ค์ง ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ์—์„œ๋งŒ ๋ฐœ์ƒํ•œ๋‹ค [4]. * **์ปดํฌ๋„ŒํŠธ ํ•ฉ์„ฑ ํŒจํ„ด(Composition Patterns):** ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ  ํ™•์žฅ์„ฑ ์žˆ๋Š” UI๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ํ•ฉ์„ฑ ํŒจํ„ด์ด ์‚ฌ์šฉ๋œ๋‹ค. ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•˜์œ„ ์š”์†Œ๋กœ ๋ Œ๋”๋งํ•˜๊ฑฐ๋‚˜, ๋ฐ˜๋Œ€๋กœ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ์˜ ์ž์‹(children)์ด๋‚˜ props๋กœ ์ „๋‹ฌํ•˜์—ฌ ์ž์‹ ์š”์†Œ๊ฐ€ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋กœ์„œ์˜ ํŠน์„ฑ์„ ์œ ์ง€ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค [1, 4]. ๋˜ํ•œ ํด๋ผ์ด์–ธํŠธ ์ธก ์ƒํƒœ๋ฅผ ์•ฑ ์ „๋ฐ˜์— ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด Context Provider ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค [4]. * **ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ์œ„ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€:** * ๊ธฐ๋ณธ์ ์œผ๋กœ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ƒํ˜ธ์ž‘์šฉ์ด ํ•„์š”ํ•œ ๊ตฌ์—ญ๋งŒ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ž‘๊ฒŒ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค [2, 3]. * ๋ ˆ์ด์•„์›ƒ ๋“ฑ ์ตœ์ƒ๋‹จ ์š”์†Œ์— ๋ถˆํ•„์š”ํ•˜๊ฒŒ `'use client'`๋ฅผ ๋‚จ์šฉํ•˜๋ฉด ํ•˜์œ„์˜ ๋ชจ๋“  ๋ผ์šฐํŠธ๊ฐ€ ํด๋ผ์ด์–ธํŠธ ์ธก ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ•์ œ ์ „ํ™˜๋˜๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค [3]. * ๋ฐ์ดํ„ฐ ํŒจ์นญ์€ ๊ฐ€๊ธ‰์  ์„œ๋ฒ„ ์ธก์—์„œ ์ˆ˜ํ–‰ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ๋ฒˆ๋“ค ํฌ๊ธฐ๋ฅผ ์ค„์ด๊ณ  ๋ณด์•ˆ์„ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค [3]. * ํ•จ์ˆ˜, ๋‚ ์งœ, ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ๋“ฑ ์ง๋ ฌํ™”ํ•  ์ˆ˜ ์—†๋Š”(non-serializable) props๋ฅผ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋กœ ๋„˜๊ฒจ์„œ๋Š” ์•ˆ ๋œ๋‹ค [5]. * **์Šคํƒ€์ผ๋ง ํŒŒ๋ผ๋‹ค์ž„ ๋ฐ ํ…Œ๋งˆ ์ ์šฉ([[CSS-in-JS|CSS-in-JS]]):** Next.js App Router ์•„ํ‚คํ…์ฒ˜์—์„œ styled-components์™€ ๊ฐ™์€ ๋Ÿฐํƒ€์ž„ CSS-in-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ๋ Œ๋”๋ง ์ค‘ CSS ๊ทœ์น™์„ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•œ '์Šคํƒ€์ผ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ([[Style Registry|Style Registry]])'๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์ด๋ฅผ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ž˜ํ•‘ํ•ด์•ผ ํ•œ๋‹ค [6]. ๋” ๋‚˜์•„๊ฐ€, [[React Context|React Context]] ์—†์ด๋„ ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ์™€ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ ๋ชจ๋‘์—์„œ ํ…Œ๋งˆ๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก CSS ์‚ฌ์šฉ์ž ์ง€์ • ์†์„ฑ(CSS custom properties)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ `createTheme` ๋“ฑ์˜ ๊ธฐ๋Šฅ์ด ๋„์ž…๋˜์–ด ๋ Œ๋”๋ง ์ปจํ…์ŠคํŠธ์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ  ์žˆ๋‹ค [7]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Server Components|Server Components]], Hydration, CSS-in-JS, [[React Context|React Context]] - **Projects/Contexts:** [[Next.js App Router|Next.js App Router]], [[styled-components|styled-components]] - **Contradictions/Notes:** ์ „ํ†ต์ ์ธ ๋Ÿฐํƒ€์ž„ CSS-in-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(styled-components, Emotion)๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ React Context์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ ๋ž˜ํ•‘์ด ํ•„์š”ํ•˜์ง€๋งŒ, ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์˜ ์„ฑ๋Šฅ([[Core Web Vitals|Core Web Vitals]]) ํ–ฅ์ƒ๊ณผ Next.js App Router์™€์˜ ์™„๋ฒฝํ•œ ํ˜ธํ™˜์„ ์œ„ํ•ด์„œ๋Š” ๋Ÿฐํƒ€์ž„ ๋น„์šฉ์ด ์—†๋Š” Tailwind CSS, [[CSS Modules|CSS Modules]] ๋˜๋Š” [[vanilla-extract|vanilla-extract]] ๋“ฑ์˜ ์ •์  CSS ์ƒ์„ฑ ๋„๊ตฌ๋กœ์˜ ์ „ํ™˜์ด 2025๋…„ ๊ธฐ์ค€ ๋”์šฑ ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅ๋˜๊ณ  ์žˆ๋‹ค [6, 8-11]. --- *Last updated: 2026-04-26*