Vue.js vuex - swkim0128/PARA GitHub Wiki


type: Vue.js archive: false

vuex


Vue.js application์— ๋Œ€ํ•œ ์ƒํƒœ๊ด€๋ฆฌํŒจํ„ด + ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

application ๋ชจ๋“  component๋“ค์˜ ์ค‘์•™ ์ €์žฅ์†Œ ์—ญํ•  (๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ)

์ƒ์œ„(๋ถ€๋ชจ) ํ•˜์œ„(์ž์‹)์˜ ๋‹จ๊ณ„๊ฐ€ ๋งŽ์ด ๋ณต์žกํ•ด ์ง„๋‹ค๋ฉด ๋ฐ์ดํ„ฐ์˜ ์ „๋‹ฌํ•˜๋Š” ๋ถ€๋ถ„์ด ๋งค์šฐ ๋ณต์žกํ•ด ์ง

application์ด ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋˜๊ณ  ๋” ์ปค์ง€๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ

!Untitled 45.png

!Untitled 1 23.png

!Untitled 2 22.png

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


!Untitled 3 21.png

vuex์˜ ํ•ต์‹ฌ ์ปจ์…‰ ์ดํ•ด


!Untitled 4 17.png

vuex ์„ค์น˜


  • CDN

    </script>

  • npm

    npm install vuex โ€”save

vuex ์ €์žฅ์†Œ ๊ฐœ๋…


  • State : ๋‹จ์ผ ์ƒํƒœ ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉ. application๋งˆ๋‹ค ํ•˜๋‚˜์˜ ์ €์žฅ์†Œ๋ฅผ ๊ด€๋ฆฌ(data)
  • Getters : Vue Instacne ์˜ Computed์™€ ๊ฐ™์€ ์—ญํ• . State๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ„์‚ฐ(computed)
  • Mutations : State์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ• (๋™๊ธฐ methods)
  • Actions : ์ƒํƒœ๋ฅผ ๋ณ€์ด ์‹œํ‚ค๋Š” ๋Œ€์‹  ์•ก์…˜์œผ๋กœ ๋ณ€์ด์— ๋Œ€ํ•œ ์ปค๋ฐ‹ ์ฒ˜๋ฆฌ (๋น„๋™๊ธฐ methods)

vuex ์„ค์ •


  • medule ์‹œ์Šคํ…œ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ์‹œ Vue.use()๋ฅผ ํ†ตํ•ด Vuex ์„ค์ •

    !Untitled 5 15.png

์ €์žฅ์†Œ(Store) - state


์ €์žฅ์†Œ์—์„œ data ์†์„ฑ์˜ ์—ญํ• 

application์—์„œ ๊ณต์œ ํ•ด์•ผ ํ•  data๋ฅผ ๊ด€๋ฆฌ

State์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹ : this.$store.state.data_name

vuex Store - state


!Untitled 6 12.png

์ €์žฅ์†Œ - Getters


  • component๊ฐ€ vuex์˜ state๋ฅผ ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต๋œ๋‹ค๋ฉด?

  • ํ•ด๊ฒฐ : Store์˜ state๋ฅผ ์ฐธ์กฐํ•˜๋Š” Getters๋ฅผ ํ™œ์šฉ

  • ์ •์˜

    !Untitled 7 10.png

  • ์‚ฌ์šฉ

    this.$store.getters.countMsg;

vuex Store - Getters


!Untitled 8 8.png

์ €์žฅ์†Œ (Store) - mapGetters


  • getters๋ฅผ ์กฐ๊ธˆ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ˜ธ์ถœ

  • ์ฃผ์˜ : Babel ๊ด€๋ จ ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ ํ•ด๊ฒฐ

    ...mapGetters ๊ด€๋ จ

    es6 spread operation ๊ด€๋ จ ์—๋Ÿฌ ๋ฐœ์ƒ

    !Untitled 9 8.png

์ €์žฅ์†Œ (Store) - Mutations


  • State์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ
  • ๊ฐ ์ปดํฌ๋„ŒํŠธ์—์„œ State์˜ ๊ฐ’์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹
  • State์˜ ๊ฐ’์˜ ์ถ”์ ์„ ์œ„ํ•ด ๋™๊ธฐ์  ๊ธฐ๋Šฅ์— ์‚ฌ์šฉ
  • Mutations๋Š” ์ง์ ‘ ํ˜ธ์ถœ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  store.commit('์ •์˜๋œ ์ด๋ฆ„')์œผ๋กœ ํ˜ธ์ถœ

vuex Store - Mutations


!Untitled 10 7.png

์ €์žฅ์†Œ (Store) - Actions


  • ๋น„๋™๊ธฐ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋ฅผ ์ ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‚ฌ์šฉ
  • Mutations๋Š” ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋น„๋™๊ธฐ์ ์ธ ์ฒ˜๋ฆฌ๋Š” Actions๊ฐ€ ๋‹ด๋‹น
  • Actions๋Š” ๋น„๋™๊ธฐ ๋กœ์ง์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด Mutations๋ฅผ ํ˜ธ์ถœ

!Untitled 11 6.png

vuex ๋‹จ๊ณ„๋ณ„ ์ดํ•ดํ•˜๊ธฐ


์ €์žฅ์†Œ (Store) - Getters ๋“ฑ๋ก


์ €์žฅ์†Œ(Store) - mapGetters


์ €์žฅ์†Œ (Store) - Mutations ๋“ฑ๋ก


์ €์žฅ์†Œ (Store) - Actions ๋“ฑ๋ก


์ €์žฅ์†Œ (Store) - Actions ํ˜ธ์ถœ


์ €์žฅ์†Œ (Store) - mapActions


โš ๏ธ **GitHub.com Fallback** โš ๏ธ