๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Development/Vue.js

Vue.js - Vuex Intro

by DevIseo 2022. 5. 13.

๐Ÿ”” Vuex Intro.


|Vuex

  • โ€œStatement management pattern + Libraryโ€ for vue.js
    • ์ƒํƒœ ๊ด€๋ฆฌ ํŒจํ„ด + ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • ์ƒํƒœ(state)๋ฅผ ์ „์—ญ ์ €์žฅ์†Œ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    • ์ƒํƒœ๊ฐ€ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ๋งŒ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•˜๋Š” ๊ทœ์น™ ์„ค์ •
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•œ ์ค‘์•™ ์ง‘์ค‘์‹ ์ €์žฅ์†Œ ์—ญํ• 
  • Vue์˜ ๊ณต์‹ devtools์™€ ํ†ตํ•ฉ๋˜์–ด ๊ธฐํƒ€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ์ œ๊ณต

 

 

|State

  • state๋Š” ๊ณง data์ด๋ฉฐ ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ์ด ๋˜๋Š” ์š”์†Œ
  • ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋“  ์ƒํƒœ ์ •๋ณด

 

 

|์ƒํƒœ ๊ด€๋ฆฌ ํŒจํ„ด

  • ์ปดํฌ๋„ŒํŠธ์˜ ๊ณต์œ ๋œ ์ƒํƒœ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์ด๋ฅผ ์ „์—ญ์—์„œ ๊ด€๋ฆฌ ํ•˜๋„๋ก ํ•จ
  • ์ปดํฌ๋„ŒํŠธ๋Š” ์ปค๋‹ค๋ž€ view๊ฐ€ ๋˜๋ฉฐ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋Š” ํŠธ๋ฆฌ์— ์ƒ๊ด€์—†์ด ์ƒํƒœ์— ์•ก์„ธ์Šค ํ•˜๊ฑฐ๋‚˜ ๋™์ž‘์„ ํŠธ๋ฆฌ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์Œ
    • ํŠธ๋ฆฌ๊ฑฐ
      • ํŠน์ •ํ•œ ๋™์ž‘์— ๋ฐ˜์‘ํ•ด ์ž๋™์œผ๋กœ ํ•„์š”ํ•œ ๋™์ž‘์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ
  • ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ํŠน์ • ๊ทœ์น™ ์ ์šฉ๊ณผ ๊ด€๋ จ๋œ ๊ฐœ๋…์„ ์ •์˜ํ•˜๊ณ  ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ์ฝ”๋“œ์˜ ๊ตฌ์กฐ์™€ ์œ ์ง€ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ํ–ฅ์ƒ

 

 

|๊ธฐ์กด Pass props & Emit event

  • ๊ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌ
  • ๋ฐ์ดํ„ฐ๋Š” ๋‹จ๋ฐฉํ–ฅ ํ๋ฆ„์œผ๋กœ ๋ถ€๋ชจ โ†’ ์ž์‹ ๊ฐ„์˜ ์ „๋‹ฌ๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ ์ด๋ฒคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐ
  • ์žฅ์ 
    • ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์„ ์ง๊ด€์ ์œผ๋กœ ํŒŒ์•… ๊ฐ€๋Šฅ
  • ๋‹จ์ 
    • ์ปดํฌ๋„ŒํŠธ ์ค‘์ฒฉ์ด ๊นŠ์–ด์ง€๋Š” ๊ฒฝ์šฐ ๋™์œ„ ๊ด€๊ณ„์˜ ์ปดํฌ๋„ŒํŠธ๋กœ์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์ด ๋ถˆํŽธํ•ด์ง
    • ํšŒ์‚ฌ๋กœ ๋น„์œ ํ•˜๋ฉด ๋™๊ธฐ์—๊ฒŒ ๋ญ ๋„˜๊ฒจ์ฃผ๋ ค๋ฉด ์ƒ์‚ฌ์— ์‚ฌ์žฅ๋‹˜๊นŒ์ง€ ๊ฑฐ์ณ ๋™๊ธฐ์—๊ฒŒ ๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ ๋ฐ›์„ ๋•Œ๋„ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ ๊ฐ€์•ผ ํ•จ..
  • ๊ณตํ†ต์˜ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๋Š” ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ๊ตฌ์กฐ๊ฐ€ ๋งค์šฐ ๋ณต์žกํ•ด์ง
    • ์˜ˆ๋ฅผ ๋“ค๋ฉด, ์ง€๋‚˜์น˜๊ฒŒ ์ค‘์ฒฉ๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” prop

๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„

  • ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„
    • state๋Š” ์•ฑ์„ ์ž‘๋™ํ•˜๋Š” ์›๋ณธ ์†Œ์Šค (data)
    • view๋Š” state์˜ ์„ ์–ธ์  ๋งคํ•‘
    • action์€ view์—์„œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ๋Œ€ํ•ด ๋ฐ˜์‘์ ์œผ๋กœ state๋ฅผ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ• (methods)

 

 

|Vuex management pattern

  • ์ค‘์•™ ์ €์žฅ์†Œ(store)์— state๋ฅผ ๋ชจ์•„๋†“๊ณ  ๊ด€๋ฆฌ
  • ๊ทœ๋ชจ๊ฐ€ ํฐ (์ปดํฌ๋„ŒํŠธ ์ค‘์ฒฉ์ด ๊นŠ์€) ํ”„๋กœ์ ํŠธ์—์„œ ๋งค์šฐ ํšจ์œจ์ 
  • ๊ฐ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ค‘์•™ ์ง‘์ค‘ ์ €์žฅ์†Œ์˜ state๋งŒ ์‹ ๊ฒฝ ์“ฐ๋ฉด ๋จ
    • ๋™์ผํ•œ state๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค๋„ ๋™๊ธฐํ™” ๋จ

 

 

|๋‹จ๋ฐฉํ–ฅ ํ๋ฆ„์— ์˜์กดํ•œ state(์ƒํƒœ) ๊ด€๋ฆฌ

  1. ๋ถ€๋ชจ ์ž์‹ ๊ฐ„์˜ ์ปดํฌ๋„ŒํŠธ ๊ด€๊ณ„๊ฐ€ ๋‹จ์ˆœํ•˜๊ฑฐ๋‚˜ depth๊ฐ€ ๊นŠ์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Œ
    1. ๋ช‡ ๋‹จ๊ณ„๋งŒ ๊ฑฐ์น˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ด๋™ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํ›จ์”ฌ ์ง๊ด€์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Œ
  2. ํ•˜์ง€๋งŒ ๊ทœ๋ชจ๊ฐ€ ์ปค์กŒ์„ ๊ฒฝ์šฐ์˜ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์ง
    1. ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ ๋™๊ธฐํ™” ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›€
    2. ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์ƒ โ†’ ํ•˜๋กœ๋งŒ ๊ฐ€๋Šฅ
  3. A ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์— pass props & emit event ๋ฅผ ํ†ตํ•ด ๋™๊ธฐํ™”ํ•ด์•ผ ํ•จ

 

 

|Vuex๋ฅผ ํ™œ์šฉํ•œ state(์ƒํƒœ) ๊ด€๋ฆฌ

  1. ์ƒํƒœ์˜ ๋ณ€ํ™”์— ๋”ฐ๋ฅธ ์—ฌ๋Ÿฌ ํ๋ฆ„์„ ๋ชจ๋‘ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์„ ํ•ด์†Œ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ
    1. ์ƒํƒœ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ์ปดํฌ๋„ŒํŠธ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋„ ์ถฉ๋ถ„ํžˆ ๊ณ ๋ คํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒํƒœ ํ๋ฆ„ ๊ด€๋ฆฌ๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•ด์ง
  2. ๊ฒฐ๊ตญ ์ด๋Ÿฌํ•œ ์ƒํƒœ๋ฅผ '์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ'์˜ ํ•„์š”์„ฑ์„ ๋Š๋ผ๊ฒŒ ๋จ
    1. ์ƒํƒœ๋ฅผ ํ•œ ๊ณณ(store)์— ๋ชจ๋‘ ๋ชจ์•„ ๋†“๊ณ  ๊ด€๋ฆฌํ•˜์ž
    2. ์ƒํƒœ์˜ ๋ณ€ํ™”๋Š” ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ์—์„œ ๊ณต์œ 
    3. ์ƒํƒœ์˜ ๋ณ€ํ™”๋Š” ์˜ค๋กœ์ง€ Vuex๊ฐ€ ๊ด€๋ฆฌํ•˜์—ฌ ํ•ด๋‹น ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋Š” ๋ณ€ํ™”์— '๋ฐ˜์‘โ€™
  3. A ์ปดํฌ๋„ŒํŠธ์™€ ๊ฐ™์€ ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ , ์˜ค๋กœ์ง€ ์ƒํƒœ์˜ ๋ณ€ํ™”๋ฅผ Vuex์— ์•Œ๋ฆผ

๋Œ“๊ธ€