簡體   English   中英

提交promise的then()后,Vuex3突變不起作用

[英]Vuex3 mutation doesn't work when committed the then() of a promise

我有一個vuex商店,看起來像這樣:

new Vuex.Store({
    state: {
        foo: "initial value"
    },
    mutations: {
        update_foo (state, payload) {
            state.foo = payload;
        }
    },
    actions: {
        update (context) {
            context.commit("update_foo", "bar");
            APIwrapper("api url to get data")
                .then(response => context.commit("update_foo", "not bar"))
                .catch(e => console.error(e));
        }
    }
}

當我從vue實例中store.dispatch('update') ,它會忠實地將foo更改為“ bar”。 APIwrapper許諾完成后,將調用update_foo突變,將其轉儲出商店將顯示state.foo等於“ not bar”,但該更改未反映在我的模板中。

我對重寫我的api包裝器對象不是很瘋狂。 有什么特別的原因為什么它不起作用並且可以解決?

編輯:這是我的其余設置。

模板如下所示:

<div>
    <i :foo="foo" v-html="foo"></i>
</div>

我的vue實例看起來像:

new Vue({
    store,
    el: '#selector',
    template: template,
    beforeCreate: function () {
        store.dispatch('update');
    },
    computed: {
        foo: () => store.state.foo,
    },
});

在一些集思廣益的幫助下,我設法解決了這個問題。 我在頁面上有兩個Vue實例,這些實例通過共享基類使用一個公共變量存儲該實例。 因此,一個覆蓋另一個。 因為實例仍然存在,所以瞬時突變起作用了,但是到API響應時,實例已被覆蓋,更新失敗。

我很馬虎。 感謝大家的時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM