javascript - 当提交 promise 的 then() 时,Vuex3 突变不起作用

标签 javascript vuex

我有一个看起来像这样的 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 promise 实现了它的功能,就会调用 update_foo 突变,转储存储显示 state.foo 等于“not bar”,但该更改未反射(reflect)在我的模板中。

重写我的 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 实例,它们通过共享基类使用公共(public)变量来存储实例。因此,一个正在覆盖另一个。瞬时突变起作用是因为实例仍然存在,但当 API 响应时,实例已被覆盖并且更新失败。

我这边马虎。感谢大家的宝贵时间。

关于javascript - 当提交 promise 的 then() 时,Vuex3 突变不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48346186/

相关文章:

javascript - 悬停链接需要双击

django - 在数据库中创建帐户条目之前如何处理图像上传?

ios - 无法在 iOS 上构建项目错误代码 70,如何解决?

javascript - 如何通过在 python 的所有输出中添加 name1.name 2.... 来修改输出

javascript - 如何使用函数更改 Vue 组件按钮颜色?

javascript - 使用表达式数组进行搜索

javascript - Nuxt.js:窗口未定义

javascript - Vuex Store Module 访问状态

javascript - Vuex 中的 Action 完成后从商店调用组件函数

javascript - 仅在加载主干 View 时需要依赖项