# ์ํ ๊ด๋ฆฌ ์๊ฐ
์ํ ๊ด๋ฆฌ๋ ํ๋ ํ๋ฐํธ์๋ ํ๋ ์์ํฌ์์ ๋ชจ๋ ์ฌ์ฉํ๋ ๊ฐ๋ฐ ํจํด์ ๋๋ค. ๋ทฐ์์๋ ๋ทฐ์์ค(Vuex)๋ผ๋ ์ํ ๊ด๋ฆฌ ํจํด์ ์ฌ์ฉํฉ๋๋ค. ์ํ ๊ด๋ฆฌ๊ฐ ํ์ํ ์ด์ ๋ ์ปดํฌ๋ํธ์ ์ซ์๊ฐ ๋ง์์ก์ ๋ ์ปดํฌ๋ํธ ๊ฐ์ ๋ฐ์ดํฐ ์ ๋ฌ์ด๋ ๊ด๋ฆฌ๊ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ์ดํฐ ์ ๋ฌ์ ๋ ๋ช ์์ ์ด๊ณ ํจ์จ์ ์ผ๋ก ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด ์ํ ๊ด๋ฆฌ์ ๋๋ค.
# ๋ทฐ์์ค ์๊ฐ
๋ทฐ์์ค๋ ๋ทฐ์ ์ํ ๊ด๋ฆฌ ํจํด์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์๋๋ ๋ทฐ์์ค์ ๊ฐ๋ ์ ๋จ์ํ๊ฒ ๋์ํํ ๊ทธ๋ฆผ์ ๋๋ค.
ํ๋ฉด(View) -> ํ๋ฉด์์์ ์ด๋ฒคํธ ๋ฐ์(Actions) -> ๋ฐ์ดํฐ ๋ณ๊ฒฝ(State)์ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ด ํน์ง์ ๋๋ค.
# ๋ทฐ์์ค ๊ธฐ์ ์์
๋ทฐ์์ค์ ์ฃผ์ ๊ธฐ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- state
- getters
- mutations
- actions
๊ฐ ์์ฑ์ ๋ํ ์์ธํ ์ค๋ช ์ ํด๋น ์ฑํฐ์์ ํ์ธํ๊ฒ ์ต๋๋ค.
# ๋ทฐ์์ค ์ค์น
๋ทฐ์์ค๋ฅผ ํ๋ก์ ํธ์ ์ค์นํ๊ธฐ ์ํด์ ์๋์ ๋ฐฉ๋ฒ์ ๋ฐ๋ฆ ๋๋ค.
# CDN ๋ฐฉ์
<script src="https://unpkg.com/vuex"></script>
# NPM ๋ฐฉ์
npm install vuex --save
# ๋ทฐ์์ค ๋ฑ๋ก
๋ทฐ์์ค๋ฅผ ๋ฑ๋กํ๊ธฐ ์ํด์๋ ๋ทฐ ๋ผ์ฐํฐ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ทฐ ์คํ ์ด๋ฅผ ํ๋ ์์ฑํด์ผ ํฉ๋๋ค.
// store.js
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export const store = new Vuex.Store({
// ..
});
๋ทฐ ์คํ ์ด๋ฅผ ํ๋ ์์ฑํ๊ณ ๋์ ES6 import/export ๋ฌธ๋ฒ์ผ๋ก main.js ํ์ผ์ ์ธ์คํด์ค์ ์ฃผ์ ํฉ๋๋ค.
// main.js
import Vue from 'vue';
import { store } from './store.js';
new Vue({
store: store
})
# ๋ทฐ์์ค ๊ตฌ์กฐ๋
๋ทฐ์์ค์ ์ ์ฒด ํ๋ฆ์ ๋ํ๋ธ ๊ทธ๋ฆผ์ ๋๋ค.
๋ฐ์ดํฐ์ ํ๋ฆ์ Actions -> Mutations -> State ์์์์ ์ ์ ์์ต๋๋ค.