--- id: wiki-2026-0508-one-way-data-flow title: One way Data Flow category: Frontend status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [auto-wikified, technical-documentation, frontend] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # One-way Data Flow ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„(One-way Data Flow)์€ ์ƒํƒœ(State), ๋ทฐ(View), ๊ทธ๋ฆฌ๊ณ  ์•ก์…˜(Actions)์ด๋ผ๋Š” ์„ธ ๊ฐ€์ง€ ํ•ต์‹ฌ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋œ ๋…๋ฆฝ์ ์ธ ์ƒํƒœ ๊ด€๋ฆฌ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค [1]. ์•ฑ์„ ๊ตฌ๋™ํ•˜๋Š” '์ง„์‹ค์˜ ์›์ฒœ(Source of truth)'์ธ ์ƒํƒœ๊ฐ€ ์„ ์–ธ์ ์œผ๋กœ ๋ทฐ์— ๋งคํ•‘๋˜๊ณ , ๋ทฐ์—์„œ์˜ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ๋ฐ˜์‘ํ•˜์—ฌ ์•ก์…˜์ด ๋‹ค์‹œ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋‹จ๋ฐฉํ–ฅ์˜ ์‚ฌ์ดํด์„ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค [1]. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋™์ผํ•œ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ํ”„๋กœํ”„ ๋“œ๋ฆด๋ง(Prop Drilling) ๋“ฑ ๊ตฌ์กฐ์  ํ•œ๊ณ„์— ๋ถ€๋”ชํž ์ˆ˜ ์žˆ๋Š” ๋ชจ๋ธ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค [2]. ## ๐Ÿ“– Core ์†Œ Content - **๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์˜ 3์š”์†Œ**: ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ ์ธ์Šคํ„ด์Šค๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ์ž์ฒด์ ์ธ ๋ฐ˜์‘ํ˜• ์ƒํƒœ๋ฅผ "๊ด€๋ฆฌ"ํ•˜๋ฉฐ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค [1]. ์ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™์˜ ํ•ต์‹ฌ์ด ๋˜๋Š” **์ƒํƒœ(State)**, ์ด ์ƒํƒœ๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” **๋ทฐ(View)**, ๊ทธ๋ฆฌ๊ณ  ๋ทฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ๋ฐ˜์‘ํ•ด ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” **์•ก์…˜(Actions)**์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ํ๋ฆ…๋‹ˆ๋‹ค [1]. - **๊ณต์œ  ์ƒํƒœ(Shared State)์—์„œ์˜ ํ•œ๊ณ„์ **: ๋‹จ๋ฐฉํ–ฅ ๊ตฌ์กฐ๋Š” ๋‹จ์ผ ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ๋Š” ๋‹จ์ˆœํ•˜๊ณ  ๋ช…ํ™•ํ•˜์ง€๋งŒ, ์—ฌ๋Ÿฌ ๋ทฐ(View)๊ฐ€ ๋™์ผํ•œ ์ƒํƒœ์— ์˜์กดํ•˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ๋ทฐ์˜ ์•ก์…˜์ด ๋™์ผํ•œ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋Š” ๊ทธ ๋‹จ์ˆœ์„ฑ์ด ๋ฌด๋„ˆ์ง€๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค [2]. - **์ƒํƒœ ๋Œ์–ด์˜ฌ๋ฆฌ๊ธฐ์™€ ํ”„๋กœํ”„ ๋“œ๋ฆด๋ง(Prop Drilling)**: ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ์šฐํšŒ ๋ฐฉ๋ฒ•์€ ๊ณต์œ  ์ƒํƒœ๋ฅผ ๊ณตํ†ต ์กฐ์ƒ ์ปดํฌ๋„ŒํŠธ๋กœ "๋Œ์–ด์˜ฌ๋ฆฐ(Lifting)" ๋’ค Props๋ฅผ ํ†ตํ•ด ํ•˜์œ„๋กœ ๋‚ด๋ ค๋ณด๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค [2]. ํ•˜์ง€๋งŒ ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ ๊ณ„์ธต์ด ๊นŠ์–ด์ง€๋ฉด ์ƒํƒœ๋ฅผ ๋Š์ž„์—†์ด ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” 'ํ”„๋กœํ”„ ๋“œ๋ฆด๋ง'์ด๋ผ๋Š” ์ง€๋ฃจํ•˜๊ณ  ๋ณต์žกํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [2]. - **์ทจ์•ฝํ•œ ์ƒํƒœ ๋™๊ธฐํ™” ํŒจํ„ด์˜ ์œ„ํ—˜์„ฑ**: ์ƒํƒœ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด ํ…œํ”Œ๋ฆฟ ์ฐธ์กฐ(Template refs)๋ฅผ ํ†ตํ•ด ๋ถ€๋ชจ/์ž์‹ ์ธ์Šคํ„ด์Šค์— ์ง์ ‘ ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜, ์ด๋ฐ‹(Emitted) ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ์ƒํƒœ์˜ ๋ณต์‚ฌ๋ณธ์„ ๋ณ€๊ฒฝํ•˜๋ ค ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3]. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ํŒจํ„ด์€ ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ๊นจ์ง€๊ฒŒ ๋งŒ๋“ค๊ณ  ์žฅ๊ธฐ์ ์ธ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๋งค์šฐ ์–ด๋ ต๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค [3]. - **๊ธ€๋กœ๋ฒŒ ์‹ฑ๊ธ€ํ†ค(Global Singleton) ํŒจํ„ด์œผ๋กœ์˜ ์ง„ํ™”**: ๋‹จ๋ฐฉํ–ฅ ํ๋ฆ„์˜ ํ•œ๊ณ„๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ง๊ด€์ ์ด๊ณ  ๋‹จ์ˆœํ•œ ํ•ด๊ฒฐ์ฑ…์€ ๊ณต์œ  ์ƒํƒœ๋ฅผ ์ปดํฌ๋„ŒํŠธ ์™ธ๋ถ€๋กœ ์ถ”์ถœํ•˜์—ฌ ๊ธ€๋กœ๋ฒŒ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค [3]. ์ด ํŒจํ„ด์„ ์ ์šฉํ•˜๋ฉด ์ „์ฒด ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ๊ฐ€ ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ '๋ทฐ' ์—ญํ• ์„ ํ•˜๊ฒŒ ๋˜๋ฉฐ, ํŠธ๋ฆฌ์˜ ๊นŠ์ด์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ์–ด๋–ค ์ปดํฌ๋„ŒํŠธ๋“  ์ƒํƒœ์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ์•ก์…˜์„ ํŠธ๋ฆฌ๊ฑฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค [3]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์›์น™์— ๋”ฐ๋ผ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ€๋ชจ์—์„œ ์ž์‹์œผ๋กœ ์ƒํƒœ๋ฅผ ๊ณ„์† ์ „๋‹ฌ(Props)ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ณ ์ˆ˜ํ•  ๊ฒฝ์šฐ, ๊ณ„์ธต์ด ๊นŠ์–ด์งˆ์ˆ˜๋ก ์ฝ”๋“œ๊ฐ€ ๋น„ํšจ์œจ์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” 'ํ”„๋กœํ”„ ๋“œ๋ฆด๋ง(Prop Drilling)' ๋ถ€์ž‘์šฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [2]. ์ด๋ฅผ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•ด ์ธ์Šคํ„ด์Šค์— ์ง์ ‘ ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์ƒํƒœ ๋ณต์‚ฌ๋ณธ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋Œ€์•ˆ์„ ํƒํ•˜๋ฉด, ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ ธ ์œ ์ง€๋ณด์ˆ˜ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ทจ์•ฝํ•œ ์ฝ”๋“œ๋ฅผ ์ƒ์‚ฐํ•˜๊ฒŒ ๋˜๋Š” ๋ฐ˜๋Œ€๊ธ‰๋ถ€๊ฐ€ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค [3]. ์ด๋Ÿฌํ•œ ์ œ์•ฝ ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒํƒœ๋ฅผ ๊ธ€๋กœ๋ฒŒ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์ด ๋ฐฉ์‹ ์—ญ์‹œ **์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR)** ํ™˜๊ฒฝ๊ณผ ๊ฒฐํ•ฉ๋  ๊ฒฝ์šฐ ์น˜๋ช…์ ์ธ ์ œ์•ฝ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค [4, 5]. SSR ํ™˜๊ฒฝ์—์„œ๋Š” ๋‹จ์ผ ์‹ฑ๊ธ€ํ†ค ์Šคํ† ์–ด๊ฐ€ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ(Requests) ๊ฐ„์— ๊ณต์œ ๋˜์–ด ์˜๋„์น˜ ์•Š์€ ๋ฐ์ดํ„ฐ ์œ ์ถœ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 5]. ๋˜ํ•œ, ์ปดํฌ๋„ŒํŠธ๋“ค์ด ์™ธ๋ถ€์˜ ์ „์—ญ ์ƒํƒœ๋ฅผ ์ž„์˜๋กœ ์ง์ ‘ ์ˆ˜์ •(Mutate)ํ•˜๋„๋ก ๋ฐฉ์น˜ํ•˜๋ฉด ์ƒํƒœ ๊ด€๋ฆฌ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ์žƒ๊ฒŒ ๋˜๋ฏ€๋กœ, ๋ฐ˜๋“œ์‹œ ์˜๋„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ๋ฉ”์„œ๋“œ(Actions)๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ƒํƒœ ๋ณ€๊ฒฝ ๋กœ์ง์„ ์ค‘์•™์ง‘์ค‘ํ™”ํ•˜์—ฌ ์ œ์–ดํ•ด์•ผ ํ•œ๋‹ค๋Š” ์„ค๊ณ„์  ์ฑ…์ž„์ด ๋”ฐ๋ฆ…๋‹ˆ๋‹ค [6]. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) ### Related Concepts #### [๊ตฌ์กฐ์  ํ•œ๊ณ„ ๋ฐ ๋ถ€์ž‘์šฉ (์•„ํ‚คํ…์ฒ˜/๊ธฐ๋ฐ˜ ๊ธฐ์ˆ )] - [[Prop Drilling]] - ์—ฐ๊ฒฐ ์ด์œ : ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๋ชจ๋ธ ํ•˜์—์„œ ์—ฌ๋Ÿฌ ๊ณ„์ธต์˜ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด Props๋ฅผ ํ†ตํ•ด ์ƒํƒœ๋ฅผ ๊ณ„์† ๋‚ด๋ ค๋ณด๋‚ผ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ํ•„์ˆ˜์ ์ธ ๋ถ€์ž‘์šฉ์ž…๋‹ˆ๋‹ค [2]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ƒํƒœ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์ง์— ๋”ฐ๋ผ ์ปดํฌ๋„ŒํŠธ ๊ฒฐํ•ฉ๋„๊ฐ€ ์–ด๋–ป๊ฒŒ ์ฆ๊ฐ€ํ•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  React์˜ Context API๋‚˜ Vue์˜ Provide/Inject ๋„์ž…์ด ์™œ ํ•„์ˆ˜์ ์ธ์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 7]. - [[Server-Side Rendering (SSR)]] - ์—ฐ๊ฒฐ ์ด์œ : ๋‹จ๋ฐฉํ–ฅ ํ๋ฆ„์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์ „์—ญ ์ƒํƒœ(๊ธ€๋กœ๋ฒŒ ์‹ฑ๊ธ€ํ†ค)๋ฅผ ๋„์ž…ํ•  ๋•Œ, ๋‹ค์ค‘ ์š”์ฒญ ๊ฐ„ ์Šคํ† ์–ด ๊ณต์œ  ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜ ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค [4, 5]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ฐ์ดํ„ฐ ํ๋ฆ„๊ณผ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ, ํด๋ผ์ด์–ธํŠธ ์ธก ํ™˜๊ฒฝ๊ณผ ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง ํ™˜๊ฒฝ ๊ฐ„์˜ ๊ตฌ์กฐ์  ์ฐจ์ด์™€ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ๋ฐฉ์ง€ ์ „๋žต์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 5]. #### [ํ•ด๊ฒฐ ๋ฐ ๊ตฌํ˜„ ๋„๊ตฌ (๊ตฌํ˜„/ํ™œ์šฉ ๋„๊ตฌ)] - [[Global Singleton]] - ์—ฐ๊ฒฐ ์ด์œ : ๋‹ค์ˆ˜์˜ ๋ทฐ๊ฐ€ ๋™์ผํ•œ ์ƒํƒœ์— ์˜์กดํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์˜ ๊ทผ๋ณธ์ ์ธ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ์ฑ„ํƒ๋˜๋Š” ์ƒํƒœ ์ถ”์ถœ ํŒจํ„ด์ž…๋‹ˆ๋‹ค [3]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: Pinia๋‚˜ Vuex ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ๋ฅผ ํ•˜๋‚˜์˜ ๊ฑฐ๋Œ€ํ•œ ๋ทฐ์ฒ˜๋Ÿผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [3, 8, 9]. ### Deeper Research Questions - ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์›์น™์„ ํ›ผ์†ํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ๊นŠ์€ ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” Prop Drilling ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด React(Context API)์™€ Vue(Provide/Inject)๋Š” ์–ด๋–ค ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ฐจ์ด๋ฅผ ๊ฐ€์ง€๋Š”๊ฐ€? - ๊ธ€๋กœ๋ฒŒ ์‹ฑ๊ธ€ํ†ค(Global Singleton)์„ ํ™œ์šฉํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ๋„๊ตฌ(์˜ˆ: Pinia)๋Š” SSR ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ์š”์ฒญ ๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ต์ฐจ ์˜ค์—ผ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ์–ด๋–ค ์ธ์Šคํ„ด์Šคํ™” ์ „๋žต์„ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€? - ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„ ์‹œ, '๋‹จ์ผ ์†Œ์Šค ์ง„์‹ค(Single Source of Truth)' ์›์น™์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด๋ถ„๋ณ„ํ•œ ์ƒํƒœ ๋ณ€์ด(Mutation)๋ฅผ ๋ง‰๊ณ  ์ค‘์•™์ง‘์ค‘์‹ ์•ก์…˜(Actions)๋งŒ์„ ํ—ˆ์šฉํ•˜๋„๋ก ํ”„๋ ˆ์ž„์›Œํฌ ์ˆ˜์ค€์—์„œ ๊ฐ•์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€? - ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์˜ ๋กœ์ปฌ ์ƒํƒœ(Local State)์™€ ์Šคํ† ์–ด๋กœ ์ถ”์ถœํ•ด์•ผ ํ•  ์ „์—ญ ์ƒํƒœ(Global State)๋ฅผ ๋‚˜๋ˆ„๋Š” ๋ช…ํ™•ํ•œ ์•„ํ‚คํ…์ฒ˜์  ํŒ๋‹จ ๊ธฐ์ค€๊ณผ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋Š” ๋ฌด์—‡์ธ๊ฐ€? - ๋ณตํ•ฉ ์ปดํฌ๋„ŒํŠธ(Compound Components) ํŒจํ„ด๊ณผ ๊ฐ™์€ ํ˜„๋Œ€์  UI ์„ค๊ณ„ ๋ฐฉ์‹์€ ๋ถ€๋ชจ-์ž์‹ ๊ฐ„์˜ ์•”์‹œ์  ์ƒํƒœ ๊ณต์œ ๋ฅผ ํ†ตํ•ด ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์˜ ํ•œ๊ณ„์™€ Prop Drilling์„ ์–ด๋–ป๊ฒŒ ๊ทน๋ณตํ•˜๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์—ฌ์ฃผ๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋•Œ, ๊ธฐ๊ณ„์ ์œผ๋กœ ์ƒํƒœ๋ฅผ ์ƒ์œ„ ๊ณ„์ธต์œผ๋กœ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๋Œ€์‹ , ์ปดํฌ๋„ŒํŠธ ํŠธ๋ฆฌ์˜ ๊นŠ์ด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํ•„์š” ์‹œ Pinia๋‚˜ Context API ๋“ฑ์„ ํ†ตํ•œ ์ „์—ญ ์ƒํƒœ ์บก์Аํ™” ๊ตฌํ˜„์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [2, 3, 7]. - **System Design:** ๋Œ€๊ทœ๋ชจ ๋ชจ๋“ˆ์‹ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ค๊ณ„ํ•  ๋•Œ, ๊ฐ UI ์š”์†Œ๋ฅผ '์ƒํƒœ(State)', '๋ทฐ(View)', '์•ก์…˜(Action)'์œผ๋กœ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜์—ฌ ์„ค๊ณ„ํ•˜๊ณ , ๊ต์ฐจ ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ํ†ต์‹ ์ด ์žฆ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ์ฒ ์ €ํ•˜๊ฒŒ ์ปดํฌ๋„ŒํŠธ ์™ธ๋ถ€์— ์œ„์น˜ํ•œ ์Šคํ† ์–ด ๊ณ„์ธต์— ๋ถ„๋ฆฌํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ˆ˜๋ฆฝํ•ฉ๋‹ˆ๋‹ค [1, 3]. - **Operation / Maintenance:** ์ƒํƒœ ์˜ค์—ผ ๋ฐ ๋ถ€์ˆ˜ ํšจ๊ณผ(Side effects)๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ปดํฌ๋„ŒํŠธ ์ฝ”๋“œ ๋‚ด๋ถ€์—์„œ ์ „์—ญ ๋ฐ˜์‘ํ˜• ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ํ–‰์œ„๋ฅผ ๊ธˆ์ง€ํ•˜๊ณ , ์บก์Аํ™”๋œ ๋ฉ”์„œ๋“œ(์˜ˆ: `store.increment()`)๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์˜ ์—„๊ฒฉํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ์ปจ๋ฒค์…˜์„ ํ™•๋ฆฝํ•ด์•ผ ์œ ์ง€๋ณด์ˆ˜ ์‹œ ์ƒํƒœ์˜ ๋ณ€๊ฒฝ ์ถ”์ ์ด ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค [6]. - **Learning Path:** ํ˜„๋Œ€์  ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ ํ•™์Šต ์‹œ, ๊ฐ€์žฅ ๋จผ์ € '๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„'์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ตํžŒ ํ›„, ํ•ด๋‹น ๊ตฌ์กฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” 'Prop Drilling'์˜ ๊ณ ํ†ต์„ ์ดํ•ดํ•˜๊ณ , ์ด๋ฅผ ์šฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ๋„๊ตฌ(Context, Pinia)์˜ ๋‹น์œ„์„ฑ์„ ํ•™์Šตํ•˜๋Š” ๋‹จ๊ณ„์  ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค [1, 2, 8]. - **My Project Relevance:** ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋ก ํŠธ์—”๋“œ ๋˜๋Š” ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ํŠน์ • ์ƒํƒœ(์˜ˆ: ์‚ฌ์šฉ์ž ์ธ์ฆ ํ† ํฐ, ํ…Œ๋งˆ, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋“ฑ)๊ฐ€ ์—ฌ๋Ÿฌ ๊ณ„์ธต์— ๊ฑธ์ณ ์ค‘๋ณต ์ „๋‹ฌ๋˜๊ณ  ์žˆ๊ฑฐ๋‚˜, ์ƒํƒœ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ๊ฐ€ ๋ณต์žกํ•˜๊ฒŒ ์–ฝํ˜€ ์žˆ๋‹ค๋ฉด, ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์ „์—ญ ์‹ฑ๊ธ€ํ†ค ์Šคํ† ์–ด ๊ตฌ์กฐ๋กœ ๋ฆฌํŒฉํ† ๋งํ•˜์—ฌ ๊ตฌ์กฐ์  ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ### Adjacent Topics - [[Prop Drilling]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„์˜ ํ•œ๊ณ„ ์ƒํ™ฉ์ธ Prop Drilling ํ˜„์ƒ์— ๋Œ€ํ•ด ๊นŠ์ด ํƒ๊ตฌํ•˜๊ณ , Context API, Provide/Inject ๋ฐ ๋ณตํ•ฉ ์ปดํฌ๋„ŒํŠธ(Compound Components) ํŒจํ„ด ๋“ฑ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์‹ค๋ฌด์ ์ธ ์„ค๊ณ„ ํŒจํ„ด ์ „๋ฐ˜์œผ๋กœ ์ดํ•ด๋„๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 7, 10]. - [[State Management Libraries (Pinia/Redux)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๊ณต์œ  ์ƒํƒœ(Shared State) ์ฒ˜๋ฆฌ์˜ ๋ณต์žก์„ฑ์„ ์‹œ์Šคํ…œ ์ˆ˜์ค€์—์„œ ์บก์Аํ™”ํ•˜๋Š” ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋™์ž‘ ์›๋ฆฌ์™€ ์ด๋“ค์ด ๊ฐœ๋ฐœ์ž ๋„๊ตฌ(DevTools)๋‚˜ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR) ํ™˜๊ฒฝ๊ณผ ๊ฒฐํ•ฉ๋˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ํ•™์Šตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 5, 8]. --- *Last updated: 2026-05-03* ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) **์ถ”์ถœ๋œ ํŒจํ„ด:** > *(TODO)* **์„ธ๋ถ€ ๋‚ด์šฉ:** - *(TODO)* ## ๐Ÿค– LLM ํ™œ์šฉ ํžŒํŠธ (How to Use This Knowledge) **์–ธ์ œ ์ด ์ง€์‹์„ ์“ฐ๋Š”๊ฐ€:** - *(TODO)* **์–ธ์ œ ์“ฐ๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€:** - *(TODO)* ## ๐Ÿงช ๊ฒ€์ฆ ์ƒํƒœ (Validation) - **์ •๋ณด ์ƒํƒœ:** needs_review - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** A - **๊ฒ€ํ†  ์ด์œ :** *(P-Reinforce Phase 1 ์ž๋™ ์ •๊ทœํ™”. ๋ณธ๋ฌธ ๊ฒ€์ฆ ํ•„์š”.)* ## ๐Ÿงฌ ์ค‘๋ณต ๊ฒ€์‚ฌ (Duplicate Check) - **๊ธฐ์กด ์œ ์‚ฌ ๋ฌธ์„œ:** *(TODO: ์ธ๋ฑ์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฆฌํฌํŠธ ์ฐธ์กฐ)* - **์ฒ˜๋ฆฌ ๋ฐฉ์‹:** UPDATE (์ž๋™ ์ •๊ทœํ™”) - **์ฒ˜๋ฆฌ ์ด์œ :** Phase 1 ์ •๊ทœํ™” โ€” ์˜› ํ…œํ”Œ๋ฆฟ/๋ˆ„๋ฝ ํ•„๋“œ ๋ณด๊ฐ•. ## ๐Ÿ•“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Changelog) | ๋‚ ์งœ | ๋ณ€๊ฒฝ ๋‚ด์šฉ | ์ฒ˜๋ฆฌ ๋ฐฉ์‹ | ์‹ ๋ขฐ๋„ | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 ์ •๊ทœํ™” (frontmatter + ํ—ค๋” ํ‘œ์ค€ํ™”) | UPDATE | A | ## ๐Ÿ’ป ์ฝ”๋“œ ํŒจํ„ด (Code Patterns) **ํŒจํ„ด 1:** *(TODO: ์ด ํ”„๋กœ์ ํŠธ ์ปจ๋ฒค์…˜ ๋ฐ˜์˜ํ•œ ๊ตฌ์กฐ ์Šค์ผˆ๋ ˆํ†ค)* ```text # TODO ``` ## ๐Ÿค” ์˜์‚ฌ๊ฒฐ์ • ๊ธฐ์ค€ (Decision Criteria) **์„ ํƒ A๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **์„ ํƒ B๋ฅผ ์จ์•ผ ํ•  ๋•Œ:** - *(TODO)* **๊ธฐ๋ณธ๊ฐ’:** > *(TODO)* ## โŒ ์•ˆํ‹ฐํŒจํ„ด (Anti-Patterns) - **[์•ˆํ‹ฐํŒจํ„ด]:** *(TODO: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*