# [[Composables]] ## ๐Ÿ“Œ Brief Summary Composables๋Š” Vue 3์˜ Composition API ํ™˜๊ฒฝ์—์„œ ์ƒํƒœ ์ €์žฅ ๋กœ์ง(stateful logic)์„ ์บก์Аํ™”ํ•˜์—ฌ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ํ•จ์ˆ˜ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. [1, 2] ๊ธฐ์กด Vue์˜ Mixin์ด ๊ฐ€์ง€๋˜ ์ด๋ฆ„ ์ถฉ๋Œ๊ณผ ์•”์‹œ์  ๋ฐ์ดํ„ฐ ํ๋ฆ„์˜ ํ•œ๊ณ„๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ทฐ ๋ ˆ์ด์–ด์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๋Š” '๊ธฐ๋Šฅ์  ์ฝ”์–ด(functional core)' ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. [3, 4] React์˜ ์ปค์Šคํ…€ ํ›…(Custom Hooks)๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ, ํ˜ธ์ถœ ์ˆœ์„œ๋‚˜ ์กฐ๊ฑด๋ถ€ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ์ œ์•ฝ์ด ์ ์–ด ๋”์šฑ ์œ ์—ฐํ•˜๊ฒŒ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [5] ## ๐Ÿ“– Core Content * **๋…ผ๋ฆฌ์˜ ์บก์Аํ™”์™€ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™**: Composables๋Š” ํŠน์ • ๊ธฐ๋Šฅ์ด๋‚˜ ๋‹จ์ผ ์ฑ…์ž„(single responsibility)์— ์ดˆ์ ์„ ๋งž์ถฐ ์„ค๊ณ„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํŽ˜์นญ ๋กœ์ง์„ ์˜ˆ๋กœ ๋“ค๋ฉด, ์ฃผ์š” ์ƒํƒœ(๋ฐ์ดํ„ฐ)์™€ ํ•จ๊ป˜ ๋กœ๋”ฉ ์ƒํƒœ, ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋“ฑ์˜ ๋ณด์กฐ ์ƒํƒœ, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜ ๋‚ด์— ํ†ตํ•ฉํ•˜์—ฌ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. [1, 6] * **์ƒ์†์„ ๋„˜์–ด์„  ํ•ฉ์„ฑ(Composition over Inheritance)**: ๊ณผ๊ฑฐ ๊ฐ์ฒด์ง€ํ–ฅ์  ์ ‘๊ทผ์ด๋‚˜ Mixin์„ ํ†ตํ•œ ์ฝ”๋“œ ๊ณต์œ ๋Š” ์†์„ฑ ์ถฉ๋Œ๊ณผ ์ถœ์ฒ˜๊ฐ€ ๋ถˆ๋ถ„๋ช…ํ•œ ๋ฐ์ดํ„ฐ ๋ฌธ์ œ๋ฅผ ๋‚ณ์•˜์Šต๋‹ˆ๋‹ค. Composables๋Š” ๋ช…์‹œ์ ์œผ๋กœ ์ •์˜๋œ ๋ฐ˜์‘ํ˜• ์ฐธ์กฐ(refs)์™€ ํ•จ์ˆ˜๋งŒ์„ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ, ์˜์กด์„ฑ ๊ด€๊ณ„๊ฐ€ ํˆฌ๋ช…ํ•˜๊ณ  ์•ˆ์ „ํ•œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜์˜ ๋…ผ๋ฆฌ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. [3, 4] * **์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„์™€ ๊ฒฐํ•ฉ**: ๋” ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ž‘์€ Composable ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ค‘์ฒฉ(nesting)ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [7] ์ด๋ ‡๊ฒŒ ์ถ”์ถœ๋œ Composables๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๋ณต์žกํ•œ ์ธ์ฆ ํ๋ฆ„์ด๋‚˜ ํผ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๋“ฑ์˜ ์ธํ„ฐ๋ž™์…˜ ๋กœ์ง์„ ์ปดํฌ๋„ŒํŠธ ๋ฐ–์œผ๋กœ ๋นผ๋‚ด์–ด UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€๋ณ๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [4, 8] * **ํŒ€ ํ˜‘์—… ๋ฐ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ ๊ทน๋Œ€ํ™”**: ๊ฐ Composable์€ `useAuth`, `useCounter`์™€ ๊ฐ™์ด ์˜๋„๋ฅผ ๋ช…ํ™•ํžˆ ๋“œ๋Ÿฌ๋‚ด๋Š” ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค. [5, 9] ๋˜ํ•œ UI DOM ์š”์†Œ ์ „์ฒด๋ฅผ ๋งˆ์šดํŠธํ•  ํ•„์š” ์—†์ด, ๋ฐ˜์‘ํ˜• ์ƒํƒœ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ๋‹ด๊ธด Composable ํ•จ์ˆ˜๋งŒ ๊ฐœ๋ณ„์ ์œผ๋กœ ์œ ๋‹› ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์–ด ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์ฝ”๋“œ ์˜ค์—ผ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ๊ฒฌ๊ณ ํ•จ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [4, 5, 10] ## โš–๏ธ Trade-offs & Caveats * **์œ ์—ฐ์„ฑ์œผ๋กœ ์ธํ•œ ์ฝ”๋“œ ํŒŒํŽธํ™” ์œ„ํ—˜**: Composition API์™€ Composables๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋†’์€ ์œ ์—ฐ์„ฑ์€ ์˜คํžˆ๋ ค ์–‘๋‚ ์˜ ๊ฒ€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ง์„ ์–ด๋–ป๊ฒŒ ์ถ”์ถœํ•˜๊ณ  ๋ช…๋ช…ํ• ์ง€์— ๋Œ€ํ•ด ํŒ€ ๋‚ด์˜ ๋ช…ํ™•ํ•œ ์ฝ”๋”ฉ ํ‘œ์ค€(naming conventions, ํŒŒ์ผ ๊ตฌ์กฐ ๋“ฑ)์ด ํ™•๋ฆฝ๋˜์ง€ ์•Š์œผ๋ฉด, ์ผ๊ด€์„ฑ ์—†๋Š” ์ฝ”๋“œ๊ฐ€ ์–‘์‚ฐ๋˜์–ด ์žฅ๊ธฐ์ ์ธ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [5, 9, 11] * **๊ฐ€ํŒŒ๋ฅธ ํ•™์Šต ๊ณก์„ **: ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ๋‚˜ Vue์— ์ฒ˜์Œ ์ž…๋ฌธํ•˜๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ์ง๊ด€์ ์ด๊ณ  ์„ ์–ธ์ ์ธ Options API์— ๋น„ํ•ด, ์ƒํƒœ์™€ ๋ฐ˜์‘์„ฑ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์กฐ๋ฆฝํ•ด์•ผ ํ•˜๋Š” Composables ํŒจํ„ด์ด ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ€ํŒŒ๋ฅธ ํ•™์Šต ๊ณก์„ ์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. [12-14] * **๋ฐ˜์‘์„ฑ(Reactivity) ์†์‹ค ์ฃผ์˜**: ์›์‹œ ๊ฐ’๊ณผ ๊ฐ์ฒด์˜ ๋ฐ˜์‘์„ฑ์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ์‹(`ref` vs `reactive`)์„ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ณ  ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น(destructuring)์„ ์˜ค์šฉํ•  ๊ฒฝ์šฐ, ์ปดํฌ๋„ŒํŠธ์™€์˜ ๋ฐ˜์‘์„ฑ ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€๋Š” ํ”ํ•œ ํ•จ์ •(pitfall)์— ๋น ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [15] ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜/๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ] - [[Composition API]] - ์—ฐ๊ฒฐ ์ด์œ : Composables๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ Vue 3์˜ ํ•ต์‹ฌ API์ž…๋‹ˆ๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋…ผ๋ฆฌ๋ฅผ ์ปดํฌ๋„ŒํŠธ ์˜ต์…˜(data, methods ๋“ฑ)์ด ์•„๋‹Œ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋ฌถ์–ด๋‚ด๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๋ฐ˜์‘์„ฑ ๊ธฐ์ดˆ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [16, 17] - [[Custom Hooks]] - ์—ฐ๊ฒฐ ์ด์œ : React ์ง„์˜์—์„œ ์ƒํƒœ ๊ธฐ๋ฐ˜ ๋กœ์ง์„ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š”, Composables์™€ ์ง์ ‘์ ์œผ๋กœ ๋Œ€์‘๋˜๋Š” ์„ค๊ณ„ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ํ•จ์ˆ˜ ํ•ฉ์„ฑ์„ ํ†ตํ•œ ๋กœ์ง ์žฌ์‚ฌ์šฉ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ดํ•ดํ•˜๊ณ , ๋‘ ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐ„์˜ ํ˜ธ์ถœ ์ œ์•ฝ(Hook์˜ ๊ทœ์น™ ๋“ฑ) ์ฐจ์ด๋ฅผ ์‹ฌ์ธต์ ์œผ๋กœ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [5, 18] #### [๊ตฌํ˜„/ํ™œ์šฉ ๋„๊ตฌ] - [[Mixins]] - ์—ฐ๊ฒฐ ์ด์œ : Vue 2์—์„œ ๋„๋ฆฌ ์“ฐ์ด๋˜ ๋กœ์ง ์žฌ์‚ฌ์šฉ ํŒจํ„ด์ด์ž, Composables๊ฐ€ ๊ทน๋ณตํ•˜๊ณ ์ž ํ•œ ํ•ต์‹ฌ ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ด๋ฆ„ ์ถฉ๋Œ(Naming collision)๊ณผ ์•”์‹œ์  ๋ฐ์ดํ„ฐ ์ถœ์ฒ˜ ๋ฌธ์ œ ๋“ฑ ๊ตฌํ˜• ํŒจํ„ด์˜ ํ•œ๊ณ„๋ฅผ ์ธ์ง€ํ•จ์œผ๋กœ์จ Composables ๋„์ž…์˜ ๋‹น์œ„์„ฑ์„ ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [3, 4] - [[Smart vs Dumb Components]] - ์—ฐ๊ฒฐ ์ด์œ : ํ”„๋ ˆ์ž„์›Œํฌ ์ „๋ฐ˜์˜ UI ์„ค๊ณ„ ํŒจํ„ด์œผ๋กœ, Composables์™€ ์‹œ๋„ˆ์ง€๋ฅผ ๋‚ด๋Š” ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐํ™” ์ „๋žต์ž…๋‹ˆ๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ฐ์ดํ„ฐ ํŽ˜์นญ ๋ฐ ์ƒํƒœ ๊ด€๋ฆฌ(Smart)๋ฅผ Composables๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ, ์˜ค์ง ๋ Œ๋”๋ง์—๋งŒ ์ง‘์ค‘ํ•˜๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ”„๋ฆฌ์  ํ…Œ์ด์…”๋„ ์ปดํฌ๋„ŒํŠธ(Dumb)๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ตํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [19] ### Deeper Research Questions - Vue 3์˜ Composables๋Š” React์˜ Custom Hooks์™€ ๋น„๊ตํ•˜์—ฌ, ๋ผ์ดํ”„์‚ฌ์ดํด ์ฒ˜๋ฆฌ ๋ฐ ๋ฐ˜์‘์„ฑ ์ถ”์ (Dependency Tracking) ๋ฉ”์ปค๋‹ˆ์ฆ˜์—์„œ ์–ด๋– ํ•œ ๊ทผ๋ณธ์  ์ฐจ์ด์™€ ์ด์ ์„ ๊ฐ€์ง€๋Š”๊ฐ€? - ๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋‹ค์ˆ˜์˜ Composables์™€ ์ค‘์•™ ์ง‘์ค‘์‹ ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Pinia ๋“ฑ)๋ฅผ ์•„ํ‚คํ…์ฒ˜ ์ˆ˜์ค€์—์„œ ์–ด๋–ป๊ฒŒ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„ํ•˜๊ณ  ์กฐํ™”๋กญ๊ฒŒ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? - ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR) ํ™˜๊ฒฝ์—์„œ Composables๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ, ๊ต์ฐจ ์š”์ฒญ ์ƒํƒœ ์˜ค์—ผ(Cross-Request State Pollution) ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์ƒํƒœ ๊ด€๋ฆฌ ์ง€์นจ์€ ๋ฌด์—‡์ธ๊ฐ€? - ์—ฌ๋Ÿฌ ๊ฐœ์˜ Composables๋ฅผ ๊นŠ๊ฒŒ ์ค‘์ฒฉ(Nesting)ํ•˜์—ฌ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋ณต์žก์„ฑ์ด๋‚˜ ์„ฑ๋Šฅ ํ•œ๊ณ„๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋ฒ” ํŒจํ„ด์€ ๋ฌด์—‡์ธ๊ฐ€? - Composables๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ถ€์ˆ˜ ํšจ๊ณผ(Side effects)๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ํ•ด์ œํ•˜๊ธฐ ์œ„ํ•ด Vue 3.5์—์„œ ๋„์ž…๋œ `onWatcherCleanup`๊ณผ ๊ฐ™์€ API๋ฅผ ์‹ค๋ฌด์— ์–ด๋–ป๊ฒŒ ์ ์šฉํ•  ๊ฒƒ์ธ๊ฐ€? ### Practical Application Contexts - **Implementation:** ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ๊ธฐ๋Šฅ, ๋‹ค๋‹จ๊ณ„ ์›Œํฌํ”Œ๋กœ์šฐ ์ง„ํ–‰ ์ƒํƒœ ์ถ”์ , API ๋ฐ์ดํ„ฐ ํŽ˜์นญ(๋กœ๋”ฉ, ์—๋Ÿฌ, ์‘๋‹ต ์ƒํƒœ ํ†ตํ•ฉ)๊ณผ ๊ฐ™์ด ๋ณต์žกํ•œ UI ์ƒํ˜ธ์ž‘์šฉ ๋ฐ ์ƒํƒœ ๋ณ€ํ™” ๋กœ์ง์„ ๊ฐœ๋ณ„ ํ•จ์ˆ˜๋กœ ์บก์Аํ™”ํ•˜์—ฌ ๊ตฌํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. [7, 8] - **System Design:** ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋กœ์ง์ด ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ์— ๋ถ„์‚ฐ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ณ , '๊ธฐ๋Šฅ์  ์ฝ”์–ด' ์—ญํ• ์„ ํ•˜๋Š” ๋…๋ฆฝ๋œ ๋ชจ๋“ˆ ๋‹จ์œ„๋กœ ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•จ์œผ๋กœ์จ ๋งˆ์ดํฌ๋กœ ํ”„๋ก ํŠธ์—”๋“œ๋‚˜ ๋ชจ๋…ธ๋ ˆํฌ ์•„ํ‚คํ…์ฒ˜ ํ™•์žฅ์— ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค. [4, 20] - **Operation / Maintenance:** ๋น„์ฆˆ๋‹ˆ์Šค ๊ทœ์น™์ด ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ๋ฒ„๊ทธ ํŒจ์น˜๊ฐ€ ํ•„์š”ํ•  ๋•Œ, ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํƒ์ƒ‰ํ•  ํ•„์š” ์—†์ด ํ•ด๋‹น ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” ๋‹จ์ผ Composable๋งŒ ์ˆ˜์ •ํ•˜์—ฌ ์ฆ‰๊ฐ์ ์ธ ์ „์—ญ ์—…๋ฐ์ดํŠธ ํšจ๊ณผ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. [5, 21] - **Learning Path:** Vue์˜ ๊ธฐ๋ณธ Reactivity(`ref`, `reactive`, `computed` ๋“ฑ)๋ฅผ ์ดํ•ดํ•œ ํ›„, ์ฝ”๋“œ์˜ ๋ชจ๋“ˆํ™”๋ฅผ ์œ„ํ•ด ํ•™์Šตํ•ด์•ผ ํ•˜๋Š” ํ•ต์‹ฌ ํŒจํ„ด์ด๋ฉฐ, ์ดํ›„ ๋Œ€๊ทœ๋ชจ ์ƒํƒœ ๊ด€๋ฆฌ(Pinia)๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์œ„ํ•œ ์ง•๊ฒ€๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. [2, 22] - **My Project Relevance:** ํ”„๋ก ํŠธ์—”๋“œ ์ฝ”๋“œ๋ฒ ์ด์Šค๊ฐ€ ์ปค์ง์— ๋”ฐ๋ผ ๋ฐœ์ƒํ•˜๋Š” ์ค‘๋ณต ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , UI ํ‘œํ˜„ ๊ณ„์ธต๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ณ„์ธต์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถฐ ํŒ€ ๋‹จ์œ„ ํ˜‘์—… ์‹œ ์ถฉ๋Œ ์—†์ด ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด ์ฆ‰๊ฐ์ ์œผ๋กœ ๋„์ž…ํ•ด์•ผ ํ•  ํŒจํ„ด์ž…๋‹ˆ๋‹ค. [23, 24] ### Adjacent Topics - [[Pinia]] - ํ™•์žฅ ๋ฐฉํ–ฅ: Composables๋ฅผ ํ†ตํ•ด ๊ฐœ๋ณ„ ์ƒํƒœ ๋กœ์ง์„ ์บก์Аํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์—์„œ ๊ณต์œ ๋˜์–ด์•ผ ํ•˜๋Š” ๊ธ€๋กœ๋ฒŒ ์ƒํƒœ๋ฅผ ํƒ€์ž… ์•ˆ์ „ํ•˜๊ณ  ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜๋กœ ์ง€์‹์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [25, 26] - [[TypeScript Generics]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋”์šฑ ๊ณ ๋„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด, Composables๊ฐ€ ๋‹ค๋ฃจ๋Š” ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ๋™์ ์œผ๋กœ ์ถ”๋ก ํ•˜๊ณ  ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๋„ค๋ฆญ์„ ์ ‘๋ชฉํ•˜๋Š” ๊ณ ๊ธ‰ ํƒ€์ž… ์„ค๊ณ„ ๊ธฐ๋ฒ•์„ ์—ฐ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [27-29] --- *Last updated: 2026-05-03*