0

如果我这样设置状态对象:

const state: {
    tools: {
        tool1: {
            status: true.
            state: 
        },
        tool2: {
            status: false.
            state: 1
        }
    }
}

在视图方面,当我使用突变更改例如状态时,一切都在正确更改。

但如果我使用 API 响应设置工具:

state.tools = response.tools;

响应是 100% 相同的,没有任何反应。状态对象的变化也可以在 Vue 调试器中看到。

所以我尝试的是添加 const state: { tools: { tool0: { status: true. 状态: } } }

并从 ajax 添加了 tool1 和 tool1(所以我的对象有 3 个子元素 tool0、tool1、tool3)。因此,如果我在 tool1 或 tool2(由 ajax 加载)上触发更改,则什么也没有发生。但是,当我在 tool0 上触发更改(之前硬编码)时,一切正常 - 在这种情况下,还应用了在 ajax 加载的内容上设置的设置。

感谢您的任何提示!

4

2 回答 2

0

您是否尝试使用 设置状态Vue.set

参考:https ://vuex.vuejs.org/en/mutations.html

从文档:

突变遵循 Vue 的反应规则

由于 Vuex 商店的状态是由 Vue 做出的反应......

...

向对象添加新属性时,您应该:使用Vue.set(obj, 'newProp', 123)或...

你在这里添加新的道具。您应该如下设置:

Vue.set(state, tools, response.tools)
于 2016-11-08T14:00:50.357 回答
0

对于更一般的答案,Vue.set 的语法是:

Vue.set(对象,键,值)

因此,如果您在某个深层次的地方使用它,您会得到:

让对象 = state.someLargeObject.SomeObjectInsideIt

Vue.set(对象,键,值)

于 2018-06-07T10:31:15.520 回答