728x90
๋ฐ์ํ
๐ก ์ค์ต ํฌ์ธํธ!
๐ Vuex ์ฌ์ฉํ๋ ์ด์ ์์๋ณด๊ธฐ
- Vuex ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ์๋ก ์ค์นํด์ผ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋๋ค.
๐ค props ์ custom event ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ ํ๋ค ๋ ์ฌ์ฉํ๋ค.
- Vuex ๋ฅผ ์ค์นํ๋ฉด js ํ์ผ ํ๋์๋ค๊ฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ด๋ก ์ธํด, ๋ชจ๋ Component ๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๊บผ๋ด์ด ์ฌ์ฉํ๊ณ ์์ ํ ์ ์๋ค.
- props ๋ฅผ ์ฌ์ฉํ ํ์ ์์ด ๋ชจ๋ Component ๊ฐ ๋ฐ์ดํฐ์ ์ง์ ์ ์ผ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๋ ๊ฒ์ด๋ค.
๐ค Vue ํ์ผ๊ณผ ๋ฐ์ดํฐ๊ฐ ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค.
- Vuex ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํ๊ด๋ฆฌ(๋ฐ์ดํฐ๊ด๋ฆฌ) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ํ๋ค.
- ๋ง์ฝ ํ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ Component ์์ ์ฌ์ฉํ๋ค๊ฐ ๊ฐ์๊ธฐ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค๋ฉด, ์ด๋์ ์๋ฌ๊ฐ ๋ฐ์ํ๋์ง ์ฐพ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ๊ณณ์ ๋ค ํ์ธํด์ผํ๋ค.
- ํ์ง๋ง Vuex ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฟ๋ง ์๋๋ผ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ๋ฐฉ๋ฒ์กฐ์ฐจ๋ ํ ๊ณณ์์ ๋ชจ๋ ๊ด๋ฆฌํ ์ ์์ผ๋ฏ๋ก ๋๋ฒ๊น ํ๊ธฐ๊ฐ ์ฝ๋ค๋ ์ฅ์ ์ด ์๋ค.
- ๋ฐ๋ผ์ ํฐ ํ๋ก์ ํธ๋ฅผ ์งํํ ๋์๋ Vuex ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ผ๋, ์์ ํ๋ก์ ํธ์์๋ ์คํ๋ ค ํ์ฉํ๋ ๊ฒ์ ๋นํด ๋ถํ์ํ๊ฒ ์ฝ๋๋ง ๊ธธ์ด์ง๋ ์ํฉ์ด ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก, ์ ์ ํ๊ฒ ํ๋จํ์ฌ ์ฌ์ฉํด์ผ ํ๋ค.
๐ Vuex ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ๊ธฐ
๐ค Vuex ์ค์นํ๊ธฐ
- ๊ตฌ๊ธ์ Vuex ๋ฅผ ๊ฒ์ํ์ฌ Vuex ํํ์ด์ง์ ์ ์ํด์ Installation ํญ์ ๋ค์ด๊ฐ๋ฉด ์์ ๊ฐ์ด ํฐ๋ฏธ๋์ ์ ๋ ฅํด์ผํ๋ ์ค์น ๋ช ๋ น์ด๋ฅผ ํ์ธํ ์ ์๋ค.
- ์ ๋ ์ฝ๋ ์ค์ ์ํ๋ ์ฝ๋๋ฅผ ๊ณจ๋ผ์ ํฐ๋ฏธ๋์ ์ ๋ ฅํ๋ฉด ์ค์น๊ฐ ๋๋ค.
๐ค Vuex ์ ํ ํ๊ธฐ
import { createStore } from 'vuex'
const store = createStore({
state(){
return {
}
},
})
export default store
- Vuex ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋๋ฉด ์์ ํด๋ ๋ด์ src ํด๋ ์์ store.js ๋ฅผ ๋ง๋ค๊ณ ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํด์ค๋ค.
import store from './store'
app.use(store).mount('#app')
- ์ด์ main.js ํ์ผ์ store.js ํ์ผ์ store ๋ผ๋ ์ด๋ฆ์ผ๋ก import ํด์ฃผ๊ณ , app.mount('#app') ์ด๋ผ๋ ์ฝ๋๋ฅผ ์์ ๊ฐ์ด ์์ ํด์ค๋ค.
(๋๋ store ๋ผ๋ ์ด๋ฆ์ผ๋ก export / import ๋ฅผ ์งํํ์ง๋ง ๋ค๋ฅธ ์ด๋ฆ์ ์ฐ๊ณ ์ถ๋ค๋ฉด ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ์ง์ด๋ ์๊ด์ ์๋ค.)
๐ค Vuex ์ฌ์ฉํ๊ธฐ
- ์ ๊ณผ์ ๊น์ง ๋ชจ๋ ์๋ฃํ๋ฉด store.js ์ ์ ์ฅํ ๋ฐ์ดํฐ๋ค์ ๋ชจ๋ Component ๊ฐ ๊ฐ์ ธ๋ค ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
- ๋ฐ์ดํฐ ์ ์ฅ์ store.js ์๋ค ํ๋ฉด ๋๊ณ , vue ํ์ผ์์ ์ฌ์ฉํ ๋์๋ $store.state.๋ฐ์ดํฐ์ด๋ฆ ๊ณผ ๊ฐ์ ํ์์ผ๋ก ์ฌ์ฉํ๋ฉด ๋๋ค.
- ํจ์๋ mounted ์์์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด this.$store.state.๋ฐ์ดํฐ์ด๋ฆ ๊ณผ ๊ฐ์ ํ์์ผ๋ก ์ฌ์ฉํ๋ฉด ๋๋ค.
728x90
๋ฐ์ํ
'[๊ฐ๋ฐ] Practice > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Vue.js] Vuex3: actions ํญ๋ชฉ ์ฌ์ฉํ๊ธฐ (0) | 2022.04.08 |
---|---|
[Vue.js] Vuex2: ์ข์์ & ์ข์์ ์ทจ์ & ์ข์์ ์ฌ๋ถ ํ์ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ (0) | 2022.04.08 |
[Vue.js] mitt ์ ์ฌ์ฉํ์ฌ ๋ฉ๋ฆฌ ๋จ์ด์ง Component ๊ฐ ๋ฐ์ดํฐ ์ ์กํ๊ธฐ (0) | 2022.04.07 |
[Vue.js] props ๋์ slot ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2022.04.07 |
[Vue.js] ์ธ์คํ๊ทธ๋จ ํํฐ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ (0) | 2022.04.07 |