【发布时间】:2018-07-25 06:41:16
【问题描述】:
我的应用程序中有一个非常复杂的状态,例如:
state: {
formFieldList: [
{
name: 'RadioGroup',
schema: {
edit:true,
label:"Radios",
name:"Radios",
type:"radios",
values: [
{
labelName: 'default',
value: 'default',
}
{
labelName: 'default2',
value: 'default',
}
]
},
{
name: 'RadioGroup1',
schema: {
edit:true,
label:"Radios1",
name:"Radios1",
type:"radios1",
values: [
{
labelName: 'default',
value: 'default',
}
{
labelName: 'default2',
value: 'default',
}
]
},
},
],
}
作为 Vuejs 数组更改警告,我在我的突变中使用 Vue.set。当我在一个 fieldList 项中设置 values 数组时,它将更新所有 RadioGroup 价值观。
updateOptionValue(state, { index, optionIndex, value }) {
let values = state.formFieldList[index].schema.values;
let labelName = values[optionIndex].labelName;
Vue.set(values, optionIndex, {
labelName,
value,
});
}
如何处理嵌套数组更新? 这是我在代码沙盒上的简单演示 https://codesandbox.io/s/w6nq81l808
当我将两个radiogroups添加到红色区域(单击radiogroup两次),并同时编辑两个radiosgroups时,值会同时改变。
【问题讨论】:
-
我不明白为什么
Vue.set(state.formFieldList[index].schema.values, optionIndex, value)不起作用。 -
@DigitalDrifter 如果不使用Vue set,它不会检测数组的变化,vuejs.org/v2/guide/list.html#Array-Change-Detection
-
@DigitalDrifter,我在 codesanbox 上创建了一个演示,Store 中的 mutaion updateOptionLabel 不起作用。