2022. 4. 1. 15:52ใFront-End ์์ ์ค/๊ธฐํ ์ฐธ๊ณ ์๋ฃ
๐ Vuex
๐ฝ ๊ฐ์
Vuex(๋ทฐ์์ค)๋ Application ์ํ ๊ด๋ฆฌ(State Management)๋ฅผ ๋๋ Library์ธ ๊ฒ์ด์์.
๋จผ์ ์ํ(State)๋ Vue์ data ์์ฑ๊ณผ ๋น์ทํ ๊ฒ์ด์์.
์ฌ๊ธฐ์ ์ํ ๊ด๋ฆฌ๋ ํ๋ FE(Front End) Framework์์ ๋ชจ๋ ์ฌ์ฉํ๋ ๊ฐ๋ฐ Pattern์ ์๋ฏธํ๋ ๊ฒ์ด์์.
Vue.js์์๋ Vuex๋ผ๋ ์ํ ๊ด๋ฆฌ Pattern์ ์ฌ์ฉํ๋ ๊ฒ์ด์์. ์ํ ๊ด๋ฆฌ๊ฐ ํ์ํ ์ด์ ๋ Component์ ์ซ์๊ฐ ๋ง์์ก์ ๋, Component ๊ฐ Data ์ ๋ฌ์ด๋, ๊ด๋ฆฌ๊ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ธ ๊ฒ์ด์์.
Data ์ ๋ฌ์ ๋ ๋ช
์์ ์ด๊ณ , ํจ์จ์ ์ผ๋ก ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด ์ํ ๊ด๋ฆฌ๋๋๋ค.
Vuex๋ Vue.js์ ์ํ ๊ด๋ฆฌ Pattern์ด์ Library์ธ ๊ฒ์ด์์. ์๋๋ Vuex์ ๊ฐ๋
์ ๋จ์ํ๊ฒ ๋์ํํ ๊ทธ๋ฆผ์ธ ๊ฒ์ด์์.
์์์ ๋ณด์ด๋ฏ์ด ํ๋ฉด(View) -> ํ๋ฉด์์์ Event ๋ฐ์(Actions) -> Data Change(State)์ Data๊ฐ ๋จ๋ฐฉํฅ์ผ๋ก ํ๋ฅธ๋ค๋ ๊ฒ์ด ํน์ง์ธ ๊ฒ์ด์์.
๐ฆ Vuex ๊ธฐ์ ์์
Vuex์ ์ฃผ์ ๊ธฐ์ ์์๋ ์๋์ ๊ฐ์ ๊ฒ์ด์์.
โ state
โ getters
โ mutations
โ actions
๊ทธ๋ ๋ค๋ฉด Vue data ์์ฑ๊ณผ '์ํ'๋ ์ด๋ค ์ฐจ์ด๊ฐ ์๋ ๊ฒ์ผ๊น์?
์ ๊ทธ๋ฆผ์ `id`๋ผ๋ Data๋ฅผ `Loing` Form Component์์ `Main` Component๋ก ์ ๋ฌํ๋ Component ๊ฐ ๊ด๊ณ๋ ์ธ ๊ฒ์ด์์. `Loing` Form Component๋ฅผ ํฌํจ ๋ชจ๋ Component์์ `id`๋ผ๋ Data(์ํ - State)๋ฅผ ์๋ก ๊ณต์ ํ๊ณ ์๋ ๊ฒ์ด์์.
๋ง์ฝ `Loing` Form์์ ์
๋ ฅ ๋ฐ์ `id`๋ฅผ `Main` Component์ ํ์ํด์ผ ํ๋ค๋ฉด `Loing` Form Component์์ `Main` Component๋ก Data ์์ฑ `id`๋ฅผ ์ ๋ฌํด์ผ ํ ๊ฒ์ด์์. ๊ทธ๋ฌ๋ฉด `id`๋ ์์ Component์ธ `Loing` Component์ ์ต์์ Component๋ฅผ ๊ฑฐ์ณ ๋ค์ ์ต์์์ ํ์ Component์ธ `Main` Component๋ก ์ ๋ฌ ๋ ๊ฒ์ด์์. ์ด์ฒ๋ผ ํน์ Data๋ฅผ ์ฌ๋ฌ Component๊ฐ ๊ณต์ ํ๊ณ ์๋ ๊ฒ์ `์ํ(State)`๋ผ๊ณ ํ๋ ๊ฒ์ด์์.
์ฐธ๊ณ ๋ก ์ด ๊ฐ๋
์ `React.js`์๋ ๋์ผํ๊ฒ ์กด์ฌํ๋ ๊ฐ๋
์ธ ๊ฒ์ด์์.
๊ทธ๋ ๋ค๋ฉด ์ํ ๊ด๋ฆฌ๊ฐ ํ์ํ ์ด์ ๋ ๋ฌด์์ผ๊น์?
์์์ ์ดํด ๋ณธ ๊ทธ๋ฆผ๊ณผ ์ ๊ทธ๋ฆผ์ ์ฐจ์ด์ ์ `Loing` Form Component์์ `Main` Component๋ก Data๋ฅผ ์ ๋ฌ ํ ๋, `Loing` Component์ ์ต์์ Component ์ฌ์ด์ ๋๋ฌด ๋ง์ Component๊ฐ ์กด์ฌํ๋ค๋ ๊ฒ์ด์์.
์ด๋ ๊ฒ ๋๋ฉด `props`๋ก Data๋ฅผ ์ ๋ฌํ๋ค๊ณ ํ ๋, `Loing` Form Component์ ์ต์์ ์ฌ์ด์ ์๋ ๋ชจ๋ Component์ `props`๋ฅผ ์ค์ ํด ์ค์ผ ํ ๊ฒ์ด์์. ์ด๋ ๊ฒ ๋๋ฉด Data ์ด๋ฆ์ ๋ฐ๊พธ๊ธฐ๋ผ๋ ํ๊ฒ ๋๋ค๋ฉด ์์ฒญ๋ ๊ณ ์์ด ๋ท ๋ฐ๋ฅผ ๊ฒ์ด์์.
์ด ๋,