我正在尝试使用Immutability-Helper和React更新State,但没有得到预期的结果。
constructor(props) {
super(props);
this.state = {
parents: {}
};
}
handleParent = (member, data) => {
// ex : member = 'applicant'
// ex : data = {'gender': 'man', 'pseudo': 'Tom'}
let newParent = update(this.state.parents, {
[member]: { $set: [data]}
});
this.setState({'parents': newParent});
};
结果:
parents {
'applicant': {
0 : {'gender': 'man', 'pseudo': 'Tom'}
},
'partner': {
0 : {'gender': 'woman', 'pseudo': 'Julie'}
}
}
但我希望父母成为:
parents {
'applicant': {
'gender': 'man',
'pseudo': 'Tom'
},
'applicant': {
'gender': 'woman',
'pseudo': 'Julie'
}
}
有什么帮助吗?
丹尼斯
最佳答案
请注意,您分配了$set: [data]
,例如,在运行时它将评估为$set:[{'gender': 'woman', 'pseudo': 'Julie'}]
,即单个值数组。
只需移除方括号,就可以了:
let newParent = update(this.state.parents, {
[member]: { $set: data }
});