# [[Context API|Context API]] ## ๐Ÿ“Œ Brief Summary Context API๋Š” React์—์„œ ํ”„๋กญ ๋“œ๋ฆด๋ง([[Prop Drilling|Prop Drilling]]) ์—†์ด ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๊ณต์œ  ๋ฐ์ดํ„ฐ๋‚˜ ์ƒํƒœ๋ฅผ ์ง์ ‘ ์†Œ๋น„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค [1], [2]. ์ด๋Š” `styled-components`์˜ `ThemeProvider`์™€ ๊ฐ™์€ ํ…Œ๋งˆ ์ ์šฉ ๊ธฐ๋Šฅ์ด๋‚˜, ์ƒํƒœ๋ฅผ ์•”์‹œ์ ์œผ๋กœ ๊ณต์œ ํ•˜๋Š” ํ•ฉ์„ฑ ์ปดํฌ๋„ŒํŠธ(Compound Components) ํŒจํ„ด์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ํ•ต์‹ฌ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค [3], [4]. ํ•˜์ง€๋งŒ ์ตœ๊ทผ์˜ [[React Server Components|React Server Components]](RSC) ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ์„œ๋ฒ„์— Context ํ™˜๊ฒฝ์ด ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋Ÿฐํƒ€์ž„ [[CSS-in-JS|CSS-in-JS]] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ๊ทผ๋ณธ์ ์œผ๋กœ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ํ•œ๊ณ„๋ฅผ ์ง€๋‹Œ๋‹ค [5], [6]. ## ๐Ÿ“– Core Content * **ํ•ฉ์„ฑ ์ปดํฌ๋„ŒํŠธ(Compound Components)์˜ ๋‚ด๋ถ€ ๊ทœ์•ฝ:** Context API๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ์™ธ๋ถ€๋กœ ๋…ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๊ด€๋ จ๋œ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋“ค ๊ฐ„์— ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด๋ถ€ ๊ทœ์•ฝ(Internal Contract)์œผ๋กœ ์ž์ฃผ ํ™œ์šฉ๋œ๋‹ค [7], [8]. ์†Œ๋น„์ž(Consumer)๊ฐ€ ๊ธ€๋กœ๋ฒŒ ์ƒํƒœ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•  ํ•„์š” ์—†์ด, ์ž์‹ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ํ”„๋กญ ๋“œ๋ฆด๋ง ์—†์ด ๊ณต์œ  ์ƒํƒœ์— ์ ‘๊ทผํ•˜์—ฌ ์œ ์—ฐํ•˜๊ณ  ์‘์ง‘๋ ฅ ์žˆ๋Š” UI๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค [2]. * **ํ…Œ๋งˆ ๋ฐ ์ „์—ญ ์Šคํƒ€์ผ ๊ด€๋ฆฌ:** `styled-components`์™€ ๊ฐ™์€ CSS-in-JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ `ThemeProvider`๋Š” Context API๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ ํ•˜์œ„์— ์žˆ๋Š” ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์— ํ…Œ๋งˆ ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•œ๋‹ค [3]. ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ ๋‚ด๋ถ€์—์„œ ๋™์  ํ…Œ๋งˆ ์ ‘๊ทผ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” `ThemeConsumer` ์—ญ์‹œ `React.createContext`๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค [9]. * **์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ๋ฆฌ๋ Œ๋”๋ง ๊ด€๋ฆฌ:** Context์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ํ•ด๋‹น Context๋ฅผ ์†Œ๋น„ํ•˜๋Š” ๋ชจ๋“  ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง๋œ๋‹ค [10]. ๋”ฐ๋ผ์„œ ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์€ UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌ์ถ•ํ•  ๋•Œ๋Š” ๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ์ƒํƒœ์˜ Context์™€ ์ •์ ์ธ ๊ตฌ์„ฑ(Configuration)์„ ๋‹ด๋‹นํ•˜๋Š” Context๋ฅผ ๋ถ„๋ฆฌ(Split Contexts)ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•์œผ๋กœ ๊ถŒ์žฅ๋œ๋‹ค [10], [11]. * **React [[Server Components|Server Components]](RSC) ํ™˜๊ฒฝ์—์„œ์˜ ํ•œ๊ณ„:** Next.js App Router์™€ ๊ฐ™์€ ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ ์‹คํ–‰ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ React Context๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค [5], [6]. ์ด๋กœ ์ธํ•ด Context ๊ธฐ๋ฐ˜์˜ ํ…Œ๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” `styled-components`๋‚˜ `Emotion` ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” RSC์—์„œ `ThemeProvider`๊ฐ€ ์•„๋ฌด ๊ธฐ๋Šฅ๋„ ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜๋ฉฐ(no-op) [3], [12], ๋Œ€์‹  CSS ์‚ฌ์šฉ์ž ์ง€์ • ์†์„ฑ([[CSS Variables|CSS Variables]])์„ ํ™œ์šฉํ•˜๊ฑฐ๋‚˜ ๋นŒ๋“œ ํƒ€์ž„์— ์ •์  CSS๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹(Zero-runtime)์œผ๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•œ๋‹ค [13], [5], [12]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Compound Components|Compound Components]], React Server Components (RSC), Prop Drilling, [[Styled Components|Styled Components]] - **Projects/Contexts:** [[Next.js App Router|Next.js App Router]], [[Shopify Polaris|Shopify Polaris]] - **Contradictions/Notes:** ๊ธฐ์กด CSS-in-JS ์ƒํƒœ๊ณ„์—์„œ๋Š” ๋™์  ํ…Œ๋งˆ ์ œ๊ณต์„ ์œ„ํ•ด Context API์— ์ „์ ์œผ๋กœ ์˜์กดํ–ˆ์œผ๋‚˜, React Server Components(RSC) ํ™˜๊ฒฝ์—์„œ๋Š” ์„œ๋ฒ„์— Context๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ชจ์ˆœ์ด ๋ฐœ์ƒํ•˜์—ฌ CSS-in-JS๊ฐ€ RSC์™€ ๊ทผ๋ณธ์ ์œผ๋กœ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ๋‚ณ์•˜์œผ๋ฉฐ, ์ด์— ๋”ฐ๋ผ CSS ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„ ๋ฐฉํ–ฅ์ด ์ด๋™ํ•˜๊ณ  ์žˆ๋‹ค [3], [5], [6], [12]. --- *Last updated: 2026-04-26*