1.Vue 상태관리
Vue.js에서 상태를 관리하는 애플리케이션으로 Vuex를 사용할 수 있습니다. Vuex는 Vue.js 애플리케이션을 위한 상태 관리 패턴이자 라이브러리로, Vuex를 사용하면 컴포넌트 간에 공유되는 상태를 중앙 집중식으로 관리할 수 있습니다. Vuex의 주요 구성 요소로는 다음과 같습니다.
- State: 애플리케이션의 상태를 저장하는 객체
- Getters: 상태를 계산하여 반환하는 메서드로, 컴포넌트에서 상태를 쉽게 가져올 수 있도록 도움
- Mutations: 상태를 변경하는 유일한 방법으로, 동기적으로 상태를 변경
- Actions: 비동기 작업을 처리하고, 그 결과로 mutations을 호출하여 상태를 변경
- Modules: Vuex 스토어를 모듈화하여 큰 애플리케이션의 상태를 관리
2. Vuex 설치
Vuex를 설치하려면 npm또는 yarn을 사용해서 라이브러리를 다운받을 수 있습니다.
npm install vuex --save && yarn add vuex
프로젝트 디렉토리에 store.js 파일을 생성하고 Vuex 스토어를 설정합니다.
// store.js
import Vuex from 'vuex'
const store = new Vuex.Store({
state: {
count: 0,
},
mutations: {
increment(state) {
state.count++
},
decrement(state) {
state.count--
},
},
actions: {
increment({ commit }) {
commit('increment')
},
decrement({ commit }) {
commit('decrement')
},
},
getters: {
currentCount: (state) => state.count,
},
})
export default store
main.js에서 Vue 인스턴스에 Vuex 스토어를 추가합니다.
// main.js
import Vue, { createApp } from 'vue'
import App from './App.vue'
import router from './router' // 라우터 import
import store from './store'
const app = createApp(App)
app.use(router) // 라우터 추가
app.use(store) // vuex 스토어 추가
app.mount('#app')
new Vue({
render: (h) => h(App),
store,
}).$mount('#app')
3. 컴포넌트에서 Vuex 사용하기
이제 Vuex 스토어를 사용할 수 있습니다. Counter.vue 컴포넌트를 만들어 Counter를 구현해보겠습니다.
<template>
<div>
<h1>Count: {{ count }}</h1>
<button @click="increment">Increment</button>
<button @click="decrement">Decrement</button>
</div>
</template>
<script>
export default {
computed: {
count() {
return this.$store.currentCount
},
},
methods: {
increment() {
this.$store.dispatch('increment')
},
decrement() {
this.$store.dispatch('decrement')
},
},
}
</script>
4. Vuex 모듈화
애플리케이션이 커지면 스토어를 모듈화하여 관리할 수 있습니다.
// modules/counter.js
const state = {
count: 0,
}
const mutations = {
increment(state) {
state.count++
},
decrement(state) {
state.count--
},
}
const actions = {
increment({ commit }) {
commit('increment')
},
decrement({ commit }) {
commit('decrement')
},
}
const getters = {
currentCount: (state) => state.count,
}
export default {
state,
mutations,
actions,
getters,
}
이제 store.js에서 모듈을 사용합니다.
import Vuex from 'vuex'
import counter from './module/counter'
const store = new Vuex.Store({
modules: {
counter,
},
})
export default store
GitHub - Koras02/vue-tutorial: https://thinky.tistory.com/category/Front-End/VueJS
https://thinky.tistory.com/category/Front-End/VueJS - Koras02/vue-tutorial
github.com
LIST
'Front-End > VueJS' 카테고리의 다른 글
[Vue] Vue를 사용한 TMDB API 사용하기 (0) | 2025.03.17 |
---|---|
[Vue] 6장(완) API 통신 (0) | 2025.03.16 |
[Vue] 4장 라우팅 (0) | 2025.03.05 |
[Vue] 3장 리스트와 키 (0) | 2025.02.28 |
[Vue] 2장 기본 컴포넌트 (0) | 2025.02.23 |