๐ Vuex Core Concepts
|Vuex ํต์ฌ ์ปจ์

- State
- Mutations
- Actions
- Getters
|State

- โ์ค์์์ ๊ด๋ฆฌํ๋ ๋ชจ๋ ์ํ ์ ๋ณด (data)โ
- Vuex๋ single state tree๋ฅผ ์ฌ์ฉ
- ์ฆ, ์ด ๋จ์ผ ๊ฐ์ฒด๋ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ํฌํจํ๋ โ์๋ณธ ์์ค(single source of truth)โ์ ์ญํ ์ ํจ
- ์ด๋ ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ง๋ค ํ๋์ ์ ์ฅ์๋ง ๊ฐ๊ฒ ๋๋ค๋ ๊ฒ์ ์๋ฏธํจ
- ์ฌ๋ฌ ์ปดํฌ๋ํธ ๋ด๋ถ์ ์๋ ํน์ state๋ฅผ ์ค์์์ ๊ด๋ฆฌํ๊ฒ ๋จ
- ์ด์ ์ ๋ฐฉ์์ state๋ฅผ ์ฐพ๊ธฐ ์ํด ๊ฐ ์ปดํฌ๋ํธ๋ฅผ ์ง์ ํ์ธํด์ผ ํ์
- Vuex๋ฅผ ํ์ฉํ๋ ๋ฐฉ์์ Vuex Store์์ ๊ฐ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ๋ state๋ฅผ ํ ๋์ ํ์ ๊ฐ๋ฅ
- State๊ฐ ๋ณํํ๋ฉด ํด๋น state๋ฅผ ๊ณต์ ํ๋ ์ฌ๋ฌ ์ปดํฌ๋ํธ์ DOM์ (์์์) ๋ ๋๋ง
- ๊ฐ ์ปดํฌ๋ํธ๋ ์ด์ Vuex Store์์ state ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ ์ฌ์ฉ
|Mutations

- โ์ค์ ๋ก state๋ฅผ ๋ณ๊ฒฝํ๋ ์ ์ผํ ๋ฐฉ๋ฒโ
- mutation์ handler(ํธ๋ค๋ฌ ํจ์)๋ ๋ฐ๋์ ๋๊ธฐ์ ์ด์ด์ผ ํจ
- ๋น๋๊ธฐ์ ๋ก์ง(ex. ์ฝ๋ฐฑํจ์)์ state๊ฐ ๋ณํํ๋ ์์ ์ด ์๋ํ ๊ฒ๊ณผ ๋ฌ๋ผ์ง ์ ์์ผ๋ฉฐ, ์ฝ๋ฐฑ์ด ์ค์ ๋ก ํธ์ถ ๋ ์๊ธฐ๋ฅผ ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ (์ถ์ ํ ์ ์์)
- ์ฒซ๋ฒ์งธ ์ธ์๋ก ํญ์ state๋ฅผ ๋ฐ์ - why? state๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋๊น!
- Actions์์ commit() ๋ฉ์๋์ ์ํด ํธ์ถ๋จ
|Actions

- Mutations์ ์ ์ฌํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์ฐจ์ด์ ์ด ์์
- state๋ฅผ ๋ณ๊ฒฝํ๋ ๋์ mutations๋ฅผ commit() ๋ฉ์๋๋ก ํธ์ถํด์ ์คํ
- mutations์ ๋ฌ๋ฆฌ ๋น๋๊ธฐ ์์ ์ด ํฌํจ๋ ์ ์์ (Backend API์ ํต์ ํ์ฌ Data Fetching ๋ฑ์ ์์ ์ํ)
- context ๊ฐ์ฒด ์ธ์๋ฅผ ๋ฐ์
- context ๊ฐ์ฒด๋ฅผ ํตํด store/index.js ํ์ผ ๋ด์ ์๋ ๋ชจ๋ ์์์ ์์ฑ ์ ๊ทผ & ๋ฉ์๋ ํธ์ถ์ด ๊ฐ๋ฅ
- ๋จ, (๊ฐ๋ฅํ์ง๋ง) state๋ฅผ ์ง์ ๋ณ๊ฒฝํ์ง ์์
- ์ปดํฌ๋ํธ์์ dispatch() ๋ฉ์๋์ ์ํด ํธ์ถ๋จ
- โActions๋ฅผ ํตํด state๋ฅผ ์กฐ์ ํ ์ ์์ง๋ง, state๋ ์ค๋ก์ง Mutations๋ฅผ ํตํด์๋ง ์กฐ์ ํด์ผํจโ
- ๋ช ํํ ์ญํ ๋ถ๋ด์ ํตํด ์๋น์ค ๊ท๋ชจ๊ฐ ์ปค์ ธ๋ state๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํจ
|Getters

- state๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ํ์ฉํ์ฌ ๊ณ์ฐ์ ์ํ (computed ์์ฑ๊ณผ ์ ์ฌ)
- compute๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ getters๋ ์ ์ฅ์์ ์ํ(state)๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐ
- ์๋ฅผ ๋ค์ด, state์ todoList๋ผ๋ ํด์ผ ํ ์ผ์ ๋ชฉ๋ก์ ๊ฒฝ์ฐ ์๋ฃ๋ todo ๋ชฉ๋ก๋ง์ ํํฐ๋งํด์ ์ถ๋ ฅํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์
- computed ์์ฑ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก getters์ ๊ฒฐ๊ณผ๋ **state ์ข ์์ฑ์ ๋ฐ๋ผ ์บ์(cached)**๋๊ณ , ์ข ์์ฑ์ด ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ์๋ง ๋ค์ ์ฌ๊ณ์ฐ ๋จ
- getters ์์ฒด๊ฐ state๋ฅผ ๋ณ๊ฒฝํ์ง๋ ์์
- state๋ฅผ ํน์ ํ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ตฌ๋ถ(๊ณ์ฐ)๋ง ํจ
- ์ฆ, ๊ณ์ฐ๋ ๊ฐ์ ๊ฐ์ ธ์ด
๐Vuex Core Concepts Summary
- State
- ์ค์์์ ๊ด๋ฆฌํ๋ ๋ชจ๋ ์ํ ์ ๋ณด (data)
- Mutations์ ์ํด ๋ณ๊ฒฝ๋จ
- Mutations
- state๋ฅผ ๋ณ๊ฒฝํ๋ ์ ์ผํ ๋ฐฉ๋ฒ
- ๋ฐ๋์ ๋๊ธฐ์ ๋ก์ง์ด์ด์ผ ํจ
- ์ฒซ๋ฒ์งธ ์ธ์๋ก ํญ์ state๋ฅผ ๋ฐ๊ณ , Actions์ commit()์ ์ํด ํธ์ถ๋จ
- Actions
- Mutations๋ฅผ commit()์ผ๋ก ํธ์ถ
- ๋น๋๊ธฐ ๋ก์ง ์์ฑ ๊ฐ๋ฅ
- ํญ์ context ๊ฐ์ฒด๋ฅผ ๋ฐ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์์ฑ์ ์ ๊ทผ ํ ์ ์์ผ๋ state๋ฅผ ๋ณ๊ฒฝํด์๋ ์๋จ
- ์ปดํฌ๋ํธ์์ dispatch()์ ์ํด ํธ์ถ๋จ
- Getters
- store์ ์ํ๋ฅผ ๊ธฐ๋ฐํ๋ ๊ณ์ฐ ๊ฐ
- ์ค์ ์ํ๋ฅผ ๋ณ๊ฒฝํ์ง ์์
- computed ์์ฑ๊ณผ ์ ์ฌ
'Development > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Vue.js - Vuex Intro (0) | 2022.05.13 |
---|---|
Vue.js - Vuex๋ฅผ ํ์ฉํ Todo App ๊ตฌํํ๊ธฐ (0) | 2022.05.11 |
Vue.js - Youtube API๋ฅผ ์ด์ฉํด props์ emit ํ์ฉํ๊ธฐ (0) | 2022.05.11 |
Vue.js - Vue Router (0) | 2022.05.09 |
Vue.js - Pass Props & Emit Events (0) | 2022.05.09 |
๋๊ธ