본문 바로가기
개발일기

10. Vuex Store

by 김엉배 2024. 3. 18.
728x90
반응형

 

2024.03.18

로그인부터 개발 진행 중에 있는데 쿠키 및 세션 관리를 위해 Vuex Store를 통해 개발을 진행하며, 간단한 예제소스와 설명을 남긴다.


 

1. 의의

Vue.js 애플리케이션에서 상태 관리를 위해 주로 사용되는 Vuex라이브러리를 통해 상태 관리를 할 수 있다.

Vuex는 Vue.js 애플리케이션의 모든 컴포넌트에 대한 중앙 집중식 저장소 역할을 하며, 이를 통해 상태를 예측 가능한 방식으로 관리한다.

 

2. Vuex의 핵심 개념

  • State (상태): 애플리케이션의 중앙 저장소로, 컴포넌트 간에 공유되는 데이터.
  • Getters (게터): State에 접근하는 계산된 속성입니다. State의 일부 데이터를 가져오거나 가공하여 반환할 수 있다.
  • Mutations (뮤테이션): State를 변경하는 유일한 방법으로, 동기적인 작업을 수행.
  • Actions (액션): 비동기적인 작업을 수행하거나 여러 뮤테이션을 연달아 호출할 수 있다.
  • Modules (모듈): Vuex 저장소를 더 작고 모듈화된 단위로 나눌 수 있다.

3. 예제 코드: Vuex Store를 설정하고, Vue 애플리케이션에서 해당 Store를 등록하여 사용하는 방법

  • Vuex Store 설정:
// store.js

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    count: 0 // 초기 카운터 값
  },
  mutations: {
    increment(state) {
      state.count++;
    },
    decrement(state) {
      state.count--;
    }
  },
  actions: {
    increment(context) {
      context.commit('increment');
    },
    decrement(context) {
      context.commit('decrement');
    }
  },
  getters: {
    getCount: state => state.count
  }
});

 

  • Vue 애플리케이션에서 Vuex Store 사용
<!-- Counter.vue -->

<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
    <button @click="decrement">Decrement</button>
  </div>
</template>

<script>
export default {
  computed: {
    count() {
      return this.$store.getters.getCount;
    }
  },
  methods: {
    increment() {
      this.$store.dispatch('increment');
    },
    decrement() {
      this.$store.dispatch('decrement');
    }
  }
};
</script>

<style scoped>
/* 스타일을 여기에 작성할 수 있다. */
</style>

 

  • Vue 애플리케이션에서 Vuex Store 등록
// main.js

import Vue from 'vue';
import App from './App.vue';
import store from './store';

new Vue({
  el: '#app',
  store, // Vuex Store 등록
  render: h => h(App)
});
728x90
반응형

'개발일기' 카테고리의 다른 글

12. npm과 npx의 차이  (0) 2025.05.08
11. 자바 HttpServeletRequest  (26) 2024.03.19
09. Vue.js의 라이프사이클  (26) 2024.03.17
08. 리액트(React)  (63) 2024.01.25
07. DOM(Document Object Model)  (63) 2024.01.23