Vuex의 한 모듈에서 다른 모듈 상태 변경
나는 내 vuex 상점에 두 개의 모듈을 가지고 있다.
var store = new Vuex.Store({
modules: {
loading: loading
posts: posts
}
});
모듈에서loading
, 나는 재산을 가지고 있다.saving
어느 쪽이든 설정할 수 있는true
또는false
그리고 또한 변이함수라는 이름을 가지고 있다.TOGGLE_SAVING
이 재산을 설정하기 위해서.
모듈에서posts
게시물을 가져오기 전과 후에 속성을 변경하고 싶다.saving
나는 전화해서 하고 있다.commit('TOGGLE_SAVING')
의 행동 중 하나에서.posts
모듈
var getPosts = function (context) {
contex.commit(TOGGLE_LOADING);
};
커밋하려고 할 때 콘솔에 다음 오류가 발생함
[vuex] unknown local mutation type: TOGGLE_LOADING, global type: posts/TOGGLE_LOADING
다음을 사용하여 다른 모듈에서 상태를 변경하는 방법commit
?
여기에 제시된 매개 변수를 사용하여 사용해 보십시오.
commit('TOGGLE_LOADING', null, { root: true })
있다면namespaced
true로 설정(Module mode에서 기본값인 Nuxt에서) 이것은 다음과 같이 된다.
commit('loading/TOGGLE_LOADING', null, { root: true })
당신은 다른 모듈에서 정의된 돌연변이를 커밋하기 위해 행동을 사용할 수 있고, 그러면 당신은 다른 모듈에서 상태를 수정할 것이다.
다음과 같은 경우:
posts: {
actions: {
toggleSavingActions(context) {
// some actions
context.commit("TOGGLE_SAVING"); // defined in loading module
}
}
}
보통 어떤 js 파일에서도처럼 스토어를 가져와 사용할 수 있다.예를 들어:
// src/state/modules/posts.js
import store from '@/state/store'
...
store.commit('posts/TOGGLE_LOADING')
...
이것은 꽤 잘 작동하는데, 유일한 단점은 시험이나 모의고사를 분리하는 것이 어렵다는 것이다.
에디션:최근에 나는 시험 문제로 인해 내가 언급한 기술을 사용하여 모든 코드를 삭제했다.실제로 이 예에서와 같이 권장되는 방법에 따라 항상 다른 모듈의 상태를 변경할 수 있다.고유 모듈에서 인증 및 프로필을 관리하는 경우 매우 유용함.
logout: context => {
return new Promise((resolve) => {
// Clear token in all axios requests
axios.defaults.headers.common['Authorization'] = ''
// Logout from firebase
firebase
.auth()
.signOut()
.then(() => {
// Update state in profile module
context.commit('profile/SET_USER', null, {
root: true
})
resolve()
})
.catch(error => reject(error))
})
}
모듈에서 사용한 경우 다음과 같은 두 가지 방법이 있다.
1- 추가해야 한다.{ root: true }
:
commit('TOGGLE_LOADING', null, { root: true })
2(예를 들어 globalToggleLoading)아래와 같고 네가 원하는 모듈의 그것을 사용하여 세계적인 행동을 정의 내린다.dispatch('globalToggleLoading')
globalToggleLoading: {
root: true,
handler({ commit }) {
commit('TOGGLE_LOADING')
}
}
모듈이 에 있는 경우 커밋을 호출하여 돌연변이 또는 액션을 호출할 수 있으며, 다음 명령을 전송하십시오.
commit('TOGGLE_LOADING')
참조URL: https://stackoverflow.com/questions/42606091/change-another-module-state-from-one-module-in-vuex
'programing' 카테고리의 다른 글
VueJS - AJAX 호출에서 반환된 데이터 반복 (0) | 2022.05.17 |
---|---|
Vue/Vuex:배열 프록시 개체에 개체에서 발군의 공을 세우다. (0) | 2022.05.17 |
Vuex: 구성 요소에서 직접 작업 건너뛰기 및 돌연변이 커밋 (0) | 2022.05.17 |
다른 모듈 작업에서 vuex 모듈 상태 가져오기 (0) | 2022.05.17 |
어떻게 개체의 Vuex 주에 있는이 그 부동산에 대한 구성 요소에서 가치를 할당할? (0) | 2022.05.17 |