# Pinia๋?
ํผ๋์(Pinia) (opens new window)๋ Composition API ๊ธฐ๋ฐ์์ ์ฌ์ฉํ ์ ์๋ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค. Vuex์ ์ต์ ๋ฒ์ ์ธ 5๋ฅผ ์๋ฏธํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ๋ ํฉ๋๋ค.
# Vuex๋ ๋ญ๊ฐ ๋ค๋ฅผ๊น?
๋ทฐ์์ค(Vuex)๋ Vue.js์ ์ํ ๊ด๋ฆฌ ํจํด์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ทฐ์์ค๊ฐ state, getters, mutations, actions๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ํ๋ฅผ ๋ค๋ค๋ค๋ฉด ํผ๋์๋ state, getters, actions๋ก ์ํ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ๊ทธ๋์ ๋ทฐ์์ค์ ๋ค์ ๋ณต์กํ๊ฒ ๋ณด์ธ ๋ฌธ๋ฒ๋ค์ด ๋จ์ํด ์ง๋ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
ํ์ง๋ง ์ฅ์ ๋ง ์์ง๋ ์์ต๋๋ค. ํผ๋์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ปดํฌ์ง์ API ๊ธฐ๋ฐ ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฉฐ ๋ทฐ์์ค๊ฐ ์๋ ๋ค๋ฅธ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ๋ฒ์ ์ตํ์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์ต๋๋ค. ๋ฐ๋ผ์, ํ๋ก์ ํธ ์ฑ๊ฒฉ์ ๋ง๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
TIP
๐ ์ด๋ฏธ ์ด์ ์ค์ธ Vue 2,3 ํ๋ก์ ํธ๋ Vuex v4.x๋ฅผ ์ฌ์ฉ
๐ ์ ๊ท ํ๋ก์ ํธ ์ค Composition API๋ง ์ฌ์ฉํ๋ ํ๋ก์ ํธ๋ Pinia๋ฅผ ์ฌ์ฉ
# Pinia์ ์ฃผ์ ์์ฑ
ํผ๋์๋ ๋ทฐ์์ค์ ์ต์ ๋ฒ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ทฐ์์ค์ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด ๋ทฐ์์ค์ ์ฃผ์ ์์ฑ 4๊ฐ ์ค 3๊ฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- state
- getters
- actions
๋ทฐ์์ค์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด ์ฌ์ฉํ๋ mutations๊ฐ ์ฌ๋ผ์ง๊ณ actions ํ๋๋ก ์ํ ๋ณ๊ฒฝ๊ณผ ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ๋ชจ๋ ํ ์ ์๊ฒ ๋์์ต๋๋ค. ์ฌ์ฉํ๋ ์ ์ฅ์์๋ ๋ค์ ๋ฒ๊ฑฐ๋กญ๊ฒ ๋๊ปด์ก๋ ๋ฌธ๋ฒ์ด ๊ฐ์ํ ๋์์ฃ . ๋ทฐ์์ค์ ํ๋ก ๋น๊ตํด ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Vue | Vuex | Pinia |
---|---|---|
data | state | state |
computed | getters | getters |
methods | mutations | actions |
methods | actions | actions |
๋ทฐ ์ธ์คํด์ค์ data์ state๋ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค. data๋ ํด๋น ์ปดํฌ๋ํธ์ ์ํ์ด๊ณ state๋ ๋ชจ๋ ์ปดํฌ๋ํธ์ ๊ณต์ ๋๋ data(์ ์ญ ์ํ)๋ฅผ ์๋ฏธํฉ๋๋ค. computed ์์ฑ๊ณผ getters ์์ฑ ์ญ์ ๋ง์ฐฌ๊ฐ์ง๋ก ํด๋น ์ธ์คํด์ค์์๋ง ์ฌ์ฉํ ๊ฒ์ด๋ ๋ชจ๋ ์ปดํฌ๋ํธ์์ ์ฌ์ฉํ ๊ฒ์ด๋ ๋ผ๋ ์ฐจ์ด๋ง ์์ ๋ฟ ์ญํ ์ ๊ฐ์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก methods ์์ฑ์ mutations + actions๊ณผ ๊ฐ์ ์ญํ ์ ํ์๋๋ฐ ํผ๋์์์๋ actions๋ง ์ ์งํ์ฌ ๋ฌธ๋ฒ์ ๊ฐ์ํํ์ต๋๋ค.
# Pinia ์ค์น
ํผ๋์๋ ์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ Composition API๋ก๋ง ์์ฑ๋ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Vue 2์์ ์ฌ์ฉํ๋ ค๋ฉด Composition API ํ๋ฌ๊ทธ์ธ (opens new window)์ ๋ณ๋๋ก ์ค์นํด์ผ ํ๊ณ , Vue 3์์๋ ์ปดํฌ์ง์ API ์คํ์ผ ์ฝ๋๋ง ์์ฑํด์ผ ํฉ๋๋ค.
์ปดํฌ์ง์ API๋ฅผ ์ฌ์ฉํ๋ ๋ทฐ ํ๋ก์ ํธ์์ ์๋ ๋ช ๋ น์ด๋ก ํผ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํฉ๋๋ค.
# npm
npm install pinia
# yarn
yarn add pinia
# Pinia ๋ฑ๋ก
ํผ๋์๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ main.js ํ์ผ์ ๋ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
โ state vs data Store ๐ โ