VueJS - Vuex
Vuex
state
state는 스토어에서 관리하고 있는 상태를 나타내며, 컴포넌트로 이야기하면 data라고 할 수 있습니다. 스테이트는 뮤테이션 이외의 장소에서는 변경하면 안됩니다.
cnost store = new Vuex.Store({ state: { message = '메시지' });
getter
gatter는 스테이를 추출하기 위한 산출 데이터로, 컴포넌트로 이야기하면 computed와 methods의 중간 기능을 하는 존재입니다. 산출 속성과 다르게 매개변수를 받을 수 있지만 세터 기능은 없습니다. 메서드의 매개변수로 사용할 수 있는 속성 또는 매서드를 전달할 수 있습니다.
정의
cnost store = new Vuex.Store({ // ... gatters: { count(state, getters, rootState, rootGetter) { return state.count } } });호출
store.getters.count
게터를 거치지 않고 스테이트에 접근할 수도 있지만, 규칙적으로 반드시 getters를 사용하는 형태로 사용하기 바랍니다.
mutation
state를 변경할 수 있는 방법입니다. 컴포넌트로 이야기하면 methods입니다. 매개변수로 다음과 같은 정보를 받습니다.
state: 스테이트
pyaload: 커밋에서 전달된 매개변수
cnost store = new Vuex.Store({ // ... mutations: { mutationType(state, payload) { state.count = payload } });
commit
commit 은 등록되어있는 mutation을 호출할 수 있게 해 주는 인스턴스 메서드 입니다. 컴포넌트의 $emit과 비슷합니다. 임의의 매개변수를 가질 수 있으며, 액션 내부에서도 사용할 수 있습니다.
store.commit('mutationType', payload)
action
액션은 비동기 처리를 포함할 수 있는 메서드 입니다. 데이터 가공 또는 비동기 처리를 실시한 후 그 결과를 뮤테이션으로 커밋합니다.
cnost store = new Vuex.Store({ // ... actions: { actionType({ commit }, payload) { commit('mutationType') } });
dispatch
디스패치(dispatch)는 등록되어 있는 액션을 호출하는 인스턴스 메서드입니다. 다른 액션 내부에서도 사용할 수 있습니다. 임의의 매개변수를 가질 수 있으면 payload를 사용합니다. 이때 payload는 뮤테이션과 같습니다.
호출방법
store.dispatch('actionType', payload)
Vuex의 규칙
어플리케이션 레벨의 상태는 스토어로 관리하기
상태를 변경하는 것은 뮤테이션 내부에서만 수행하기
비동기 처리는 커밋하기 전에 완료해 두기
참고 사이트: https://rintiantta.github.io/jpub-vue/guide/#%ED%95%99%EC%8A%B5-%ED%8F%AC%EC%9D%B8%ED%8A%B8