Vuex Electron:변환 커밋 시 예외
저는 Vue와 Vuex를 사용하여 Electron 앱을 만들고 있습니다.
저희 가게는 다음과 같습니다.counter.js
):
const state = {
main: 5
};
const mutations = { // synchronous tasks
INCREMENT_MAIN_COUNTER (state) {
state.main++;
}
};
const getters = {
count: (state) => {
return state.main;
}
};
export default {
state, getters, mutations
}
나의 Vue 컴포넌트는 다음과 같습니다(LandingPage.vue
):
<template>
<div id="count-box">
{{count}}
<button @click="pressed">Increment counter</button>
</div>
</template>
<script>
import counter from '../store';
export default {
name: 'landing-page',
computed: {
count: () => {
return counter.getters.count;
}
},
methods: {
pressed: () => {
counter.commit('INCREMENT_MAIN_COUNTER');
}
}
};
</script>
버튼을 클릭하여 증가시키면commit
가 호출되고 다음 예외가 트리거됩니다.
Uncaught Error: [Vuex Electron] Please, don't use direct commit's, use dispatch instead of this.
at Store.store.commit (.../node_modules/vuex-electron/dist/shared-mutations.js:1)
at VueComponent.pressed (LandingPage.vue?b116:20)
at invoker (vue.esm.js?a026:2027)
at HTMLButtonElement.fn._withTask.fn._withTask (vue.esm.js?a026:1826)
https://www.youtube.com/watch?v=LW9yIR4GoVU과 https://vuex.vuejs.org/guide/mutations.html를 팔로우하고 있기 때문에 원인이 무엇인지 정확히 알 수 없습니다.
메인 프로세스를 포함한 모든 프로세스 간에 vuex 저장소를 공유하기 위해 vuex-electron을 사용하고 있을 수 있습니다.
이 프로젝트의 README.md은 이에 대해 명확하게 설명하고 있습니다.
렌더러 프로세스에서 액션을 호출하려면 dispatch 또는 mapActions를 사용해야 합니다.커밋을 통해 실행된 액션은 프로세스 간에 공유되지 않으므로 커밋을 사용하지 마십시오.
Vuex Electron은 메인 프로세스와 렌더러 프로세스 간의 통신을 위해 후드 아래에서 ipcMain과 ipcRenderer를 사용하고 있으며 두 API는 모두 비동기이기 때문이라고 생각합니다.여기서 요점은 돌연변이는 순수한 기능이어야 하고 부작용이 없어야 한다는 것입니다. 반면 작용은 있습니다.
현재 Vuex Electron을 사용하고 있는 최신 버전의 Electron-vue를 사용하기 위해 기존 코드 베이스를 업데이트 할 때 동일한 오류가 발생합니다.필요에 따라 저장소를 다른 프로세스와 공유할 필요가 없거나 돌연변이를 호출하는 "프록시" 작업을 추가할 필요가 없는 경우 Vuex Electron을 제거할 수 있습니다.
자세한 내용은 vuex 설명서를 참조하십시오.
언급URL : https://stackoverflow.com/questions/53551093/vuex-electron-exception-when-committing-mutation
'programing' 카테고리의 다른 글
[Vue warn] :방향 교차 바인딩 해제 후크 오류: "TypeError: 정의되지 않은 속성 'observer'를 읽을 수 없습니다" (0) | 2022.07.09 |
---|---|
VUEX의 가치를 얻는 방법 (0) | 2022.07.09 |
내 구성 요소에서 작업에 의해 반환된 값을 사용할 수 없습니다. (0) | 2022.07.09 |
정수 나눗셈:어떻게 더블을 만들죠? (0) | 2022.07.09 |
기존 Linux fork-exec에서 _exit() & exit()를 사용하는 것과 어떤 차이가 있습니까? (0) | 2022.07.09 |