我正在尝试使用Vue.set()
更新Vue 2中的状态对象。
这就是对象的样子:
state: {
entries: [
// entry 1
fields: {
someProperties : ''
// here I would like to add another property named 'googleInfos'
}
], [
// entry 2
fields: {
someProperties : ''
// here I would like to add another property named 'googleInfos'
}
]
}
到目前为止,我正在使用此突变进行更新。我正在分别改变每个条目,因为它们有不同的内容。
ADD_GOOGLE_INFOS (state, {index, infos}) {
state.entries[index].fields.googleInfos = infos
}
现在,我正在尝试实施Vue.set()
以避免change detection caveat。
我的问题是我找不到合适的方法来添加它。
以下是Vue.set()应该如何工作:
Vue.set(state.object, key, value)
所以我试过这个,这似乎不起作用,因为state.entries[index]
不是第一等级的对象:
Vue.set(state.entries[index], 'fields.googleInfos', infos)
但这也不起作用:
Vue.set(state.entries, '[index].fields.googleInfos', infos)
任何人都知道我做错了什么?
答案 0 :(得分:9)
唯一的非反应性部分是您尝试在fields
对象中添加的新属性。
要添加googleInfos
属性,您必须将其设置为如下突变:
ADD_GOOGLE_INFOS (state, {index, infos}) {
Vue.set(state.entries[index].fields, 'googleInfos', infos);
}