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