반응형
Vuex 변환은 동기적으로 동작하지 않지만 약속을 반환하지 않음
내 vuex 돌연변이가 동시에 작동하지 않는 것 같아.다음과 같습니다.
mutations: {
computeStatusData(state, status) {
if (status.active !== true) { return }
const started = new Date(status.startedAt);
started.setHours(0, 0, 0, 0);
const today = new Date();
status.currentDay = Math.floor((today.getTime() - started.getTime()) / (1000 * 60 * 60 * 24));
status.currentWeek = Math.floor(status.currentDay / 7);
if (!status.programm.sections) { console.log('No Sections'); return; }
for (let i = 0; i < status.programm.sections.length; i++) {
if (status.currentWeek <= status.programm.sections[i].to) {
status.currentSection = i;
console.log('Current Section', status.currentSection)
break;
}
}
console.log('new status!', status)
},
내 컴포넌트 방법으로는 다음과 같이 부릅니다.
async loadSections() {
await somethingElse();
if (this.status && this.programm.sections) {
console.log('Recomputing Status')
this.status.progamm = this.programm;
this.$store.commit('computeStatusData', status);
console.log('updated Status', this.status)
}
this.$nextTick(() => { this.$forceUpdate(); })
},
콘솔 로그는 다음과 같습니다.
Recomputing Status
updated Status {…}
Current Section 0
new status! {…}
변환이 동기화된 경우 로그로 기록해야 합니다.Current Section 0
그리고.new Status!
전에updated Status
그렇지 않아요.
약속을 반환하지 않는 것 같습니다.console.log(this.$store.commit('computeStatusData', status));
로그만 남는다undefined
.
상태를 변환하는 올바른 방법은 작업 내부에 있습니다.
https://vuex.vuejs.org/guide/actions.html
도움이 되는 질문:Vuex 액션과 돌연변이
언급URL : https://stackoverflow.com/questions/55654757/vuex-mutation-not-working-synchronously-but-neither-returning-a-promise
반응형
'programing' 카테고리의 다른 글
데이터 변수가 true인 경우에만 VueJs Bind Propoice (0) | 2022.08.28 |
---|---|
VueJS: 정의되지 않은 속성 '디스패치'를 읽을 수 없습니다. (0) | 2022.08.28 |
[Vue warn] :구성 요소를 마운트하지 못했습니다. 웹 팩 4에서 템플릿 또는 렌더링 기능이 정의되지 않았습니다. (0) | 2022.08.28 |
Vue cli 3은 패키지의 정보를 표시합니다.json (0) | 2022.08.28 |
Java에서 정수의 로그 베이스 2는 어떻게 계산합니까? (0) | 2022.08.28 |