programing

Vuex 변환은 동기적으로 동작하지 않지만 약속을 반환하지 않음

sourcetip 2022. 8. 28. 12:22
반응형

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

반응형