--- category: Frontend tags: [auto-wikified, technical-documentation, frontend] title: State Management (Pinia/Vuex) description: "Vue." last_updated: 2026-05-04 --- # State Management (Pinia/Vuex) ## πŸ“Œ Brief Summary Vue.js μƒνƒœκ³„μ—μ„œ μƒνƒœ 관리(State Management)λŠ” μ—¬λŸ¬ μ»΄ν¬λ„ŒνŠΈ 간에 κ³΅μœ λ˜λŠ” μƒνƒœλ₯Ό 효율적이고 예츑 κ°€λŠ₯ν•˜κ²Œ κ΄€λ¦¬ν•˜μ—¬ λ°μ΄ν„°μ˜ νŒŒνŽΈν™”μ™€ 'Prop Drilling' 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 핡심 λ©”μ»€λ‹ˆμ¦˜μ΄λ‹€ [1, 2]. κ³Όκ±° 곡식 μƒνƒœ 관리 λΌμ΄λΈŒλŸ¬λ¦¬μ˜€λ˜ VuexλŠ” μœ μ§€λ³΄μˆ˜ λͺ¨λ“œλ‘œ μ „ν™˜λ˜μ—ˆμœΌλ©°, 보닀 직관적인 API와 κ°•λ ₯ν•œ νƒ€μž…μŠ€ν¬λ¦½νŠΈ(TypeScript) 지원을 μ œκ³΅ν•˜λŠ” Piniaκ°€ μƒˆλ‘œμš΄ ν‘œμ€€μœΌλ‘œ 자리 μž‘μ•˜λ‹€ [3-5]. ν˜„λŒ€μ˜ λŒ€κ·œλͺ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œλŠ” Pinia와 Composition APIλ₯Ό κ²°ν•©ν•˜μ—¬ μ»΄ν¬λ„ŒνŠΈμ˜ μ±…μž„μ„ λ Œλ”λ§μ— ν•œμ •ν•˜κ³  λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μŠ€ν† μ–΄μ— μΊ‘μŠν™”ν•˜λŠ” 방식이 적극 ꢌμž₯λœλ‹€ [5, 6]. ## πŸ“– Core Content * **Vuexμ—μ„œ Pinia둜의 μ„ΈλŒ€ ꡐ체** κ³Όκ±° Vue μƒνƒœκ³„μ˜ ν‘œμ€€μ΄μ—ˆλ˜ VuexλŠ” μƒˆλ‘œμš΄ κΈ°λŠ₯ μΆ”κ°€κ°€ μ€‘λ‹¨λœ 채 μœ μ§€λ³΄μˆ˜ λͺ¨λ“œλ‘œ μ „ν™˜λ˜μ—ˆλ‹€ [3]. Vuex 5에 λŒ€ν•œ λ…Όμ˜μ—μ„œ μΆœλ°œν•œ PiniaλŠ” κΈ°μ‘΄ Vuex의 λΆˆν•„μš”ν•œ λ³΄μΌλŸ¬ν”Œλ ˆμ΄νŠΈμ™€ λ³΅μž‘ν•œ μ˜μ‹μ„ 쀄이고, 훨씬 λ‹¨μˆœν•˜κ³  직관적인 APIλ₯Ό μ œκ³΅ν•œλ‹€ [3, 4, 7]. PiniaλŠ” Vue 2와 Vue 3 λͺ¨λ‘μ—μ„œ λ™μž‘ν•˜λ©°, νƒ€μž…μŠ€ν¬λ¦½νŠΈμ™€ κ²°ν•©ν•  λ•Œ 맀우 κ²¬κ³ ν•œ νƒ€μž… 좔둠을 μ§€μ›ν•˜μ—¬ λŒ€κ·œλͺ¨ μ—”ν„°ν”„λΌμ΄μ¦ˆ ν”„λ‘œμ νŠΈμ—μ„œ κ°œλ°œμžλ“€μ΄ κ°€μž₯ μ„ ν˜Έν•˜λŠ” μƒνƒœ 관리 μ†”λ£¨μ…˜μ΄ λ˜μ—ˆλ‹€ [4, 5, 7, 8]. * **Composition API 기반의 μƒνƒœ 관리 νŒ¨ν„΄** μ†Œκ·œλͺ¨ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œλŠ” `ref()`λ‚˜ `reactive()`와 같은 Reactivity APIλ₯Ό μ‚¬μš©ν•˜μ—¬ μƒνƒœλ₯Ό μ „μ—­ μ‹±κΈ€ν†€μœΌλ‘œ μΆ”μΆœ 및 κ³΅μœ ν•  수 μžˆλ‹€ [9, 10]. 더 λ‚˜μ•„κ°€ 컴포저블(Composable) ν•¨μˆ˜λ₯Ό 톡해 μƒνƒœ λ‘œμ§μ„ μΊ‘μŠν™”ν•˜μ—¬ μž¬μ‚¬μš©ν•˜λŠ” 방식이 κ°•λ ₯ν•œ λŒ€μ•ˆμœΌλ‘œ μ‚¬μš©λœλ‹€ [6, 10]. PiniaλŠ” μ΄λŸ¬ν•œ Composition API μŠ€νƒ€μΌμ˜ μŠ€ν† μ–΄ μ •μ˜λ₯Ό μ™„λ²½νžˆ μ§€μ›ν•˜λ©°, κΈ°λŠ₯적 μƒνƒœ(functional state)와 μ»΄ν¬μ§€μ…˜ λ‘œμ§μ„ λΆ„λ¦¬ν•˜μ—¬ μ½”λ“œλ₯Ό κΉ”λ”ν•˜κ³  λͺ¨λ“ˆν™”ν•˜κΈ° μ‰½κ²Œ λ§Œλ“€μ–΄μ€€λ‹€ [4, 5, 11]. * **둜직의 쀑앙 집쀑화와 μ»΄ν¬λ„ŒνŠΈ μ—­ν•  뢄리** μ—¬λŸ¬ μ»΄ν¬λ„ŒνŠΈκ°€ λ™μΌν•œ μƒνƒœμ— μ˜μ‘΄ν•˜κ±°λ‚˜ 이λ₯Ό λ³€κ²½ν•΄μ•Ό ν•  λ•Œ μ „μ—­ μŠ€ν† μ–΄κ°€ ν•„μˆ˜μ μ΄λ‹€ [1, 2]. λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œ Piniaλ₯Ό ν™œμš©ν•˜λ©΄ μ „μ—­ μƒνƒœλΏλ§Œ μ•„λ‹ˆλΌ 비동기 λ‘œμ§κΉŒμ§€ μ•‘μ…˜(Action) 내뢀에 포함할 수 μžˆμ–΄, UI μ»΄ν¬λ„ŒνŠΈλŠ” 였직 λ Œλ”λ§μ—λ§Œ μ§‘μ€‘ν•˜λ„λ‘ μ±…μž„μ„ λͺ…ν™•νžˆ 뢄리할 수 μžˆλ‹€ [5]. * **λŒ€κ·œλͺ¨ 개발 및 ν˜‘μ—… 도ꡬ 지원** μƒνƒœ κ΄€λ¦¬λŠ” λ‹¨μˆœνžˆ 데이터λ₯Ό κ³΅μœ ν•˜λŠ” 것을 λ„˜μ–΄ νŒ€μ˜ ν˜‘μ—…μ„ μœ„ν•œ κ°•λ ₯ν•œ κ·œμ•½μ„ μ œκ³΅ν•œλ‹€ [8]. PiniaλŠ” νƒ€μž„λΌμΈ, μ»΄ν¬λ„ŒνŠΈ λ‚΄ 검사(in-component inspection), νƒ€μž„ νŠΈλž˜λΈ” 디버깅 κΈ°λŠ₯을 ν¬ν•¨ν•œ Vue DevToolsμ™€μ˜ μ›ν™œν•œ 톡합을 μ§€μ›ν•˜λ©°, HMR(Hot Module Replacement) κΈ°λŠ₯κΉŒμ§€ μ œκ³΅ν•˜μ—¬ λŒ€κ·œλͺ¨ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발 μ‹œ 디버깅과 μœ μ§€λ³΄μˆ˜μ„±μ„ κ·ΉλŒ€ν™”ν•œλ‹€ [8]. ## βš–οΈ Trade-offs & Caveats * **SSR(Server-Side Rendering) ν™˜κ²½μ—μ„œμ˜ 데이터 μ˜€μ—Ό(Data Leak) μœ„ν—˜** Reactivity APIλ₯Ό μ‚¬μš©ν•΄ μƒνƒœλ₯Ό μ „μ—­ 싱글톀 객체둜 κ΄€λ¦¬ν•˜λŠ” λ‹¨μˆœν•œ νŒ¨ν„΄μ€ μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§ ν™˜κ²½μ—μ„œ 치λͺ…적인 문제λ₯Ό μœ λ°œν•  수 μžˆλ‹€ [10]. μ—¬λŸ¬ μ‚¬μš©μžμ˜ μš”μ²­(Request) 간에 λ™μΌν•œ μŠ€ν† μ–΄ μΈμŠ€ν„΄μŠ€κ°€ 곡유되면 μƒνƒœ μ˜€μ—Όμ΄λ‚˜ 데이터 유좜이 λ°œμƒν•  수 μžˆλ‹€ [5, 10]. PiniaλŠ” 각 μš”μ²­λ§ˆλ‹€ μƒˆλ‘œμš΄ μŠ€ν† μ–΄ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ” μ•„ν‚€ν…μ²˜λ₯Ό 톡해 μ΄λŸ¬ν•œ SSR의 고질적인 취약점을 μ•ˆμ „ν•˜κ²Œ μ°¨λ‹¨ν•œλ‹€ [5]. * **μƒνƒœ μž„μ˜ λ³€κ²½μœΌλ‘œ μΈν•œ μœ μ§€λ³΄μˆ˜μ„± μ €ν•˜** 단일 λ°˜μ‘ν˜• 객체λ₯Ό μ „μ—­μœΌλ‘œ κ³΅μœ ν•  λ•Œ, 이λ₯Ό κ°€μ Έμ˜¨(import) μ–΄λ–€ μ»΄ν¬λ„ŒνŠΈλ“  μƒνƒœλ₯Ό μž„μ˜λ‘œ λ³€κ²½ν•  수 μžˆλ‹€λŠ” 점은 μž₯기적인 μ½”λ“œ μœ μ§€λ³΄μˆ˜μ„±μ„ μ €ν•΄ν•œλ‹€ [12]. 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ»΄ν¬λ„ŒνŠΈκ°€ μƒνƒœλ₯Ό 직접 μˆ˜μ •ν•˜μ§€ μ•Šλ„λ‘ μƒνƒœ λ³€κ²½ λ‘œμ§μ„ μŠ€ν† μ–΄ λ‚΄λΆ€μ˜ λͺ…μ‹œμ μΈ λ©”μ„œλ“œ(μ•‘μ…˜)둜 쀑앙 μ§‘μ€‘ν™”ν•˜μ—¬ μ˜λ„λ₯Ό λͺ…ν™•νžˆ ν‘œν˜„ν•΄μ•Ό ν•œλ‹€ [12]. * **μ˜€λ²„μ—”μ§€λ‹ˆμ–΄λ§(Over-engineering)의 κ°€λŠ₯μ„±** μ†Œκ·œλͺ¨ ν”„λ‘œμ νŠΈλ‚˜ μ»΄ν¬λ„ŒνŠΈ 계측이 얕은 경우, ꡳ이 Pinia와 같은 μ „μš© μƒνƒœ 관리 라이브러리λ₯Ό λ„μž…ν•˜λŠ” 것은 λΆˆν•„μš”ν•œ λ³΅μž‘μ„±μ„ 더할 수 μžˆλ‹€ [8]. μ΄λŸ¬ν•œ κ²½μš°μ—λŠ” Vue 3의 Composition API(`ref`, `reactive`, `computed` 및 `Provide/Inject` νŒ¨ν„΄)λ§ŒμœΌλ‘œλ„ μΆ©λΆ„νžˆ μƒνƒœ 곡유 μš”κ΅¬μ‚¬ν•­μ„ μΆ©μ‘±ν•  수 μžˆλ‹€ [10]. λ”°λΌμ„œ ν”„λ‘œμ νŠΈμ˜ 규λͺ¨μ™€ νŒ€μ˜ 디버깅 툴 ν•„μš”μ„±μ— 따라 λ„μž… μ—¬λΆ€λ₯Ό κ²°μ •ν•΄μ•Ό ν•œλ‹€. --- *Last updated: 2026-05-03*