我的商店:
{
people: [
{
id: 12345,
name: Person 1
},
{
id: 54321,
name: Person 2
}
]
}
我正在尝试更新第1人的name
媒体资源。我这样使用react-addons-update
:
update(state, {
people: {
[action.person.id]: {
name: action.person.name
}
}
}
其中action.person
是对象{ id: 12345, name: New name }
。
但是,我一直收到错误:
未捕获(承诺)TypeError:无法读取属性' name'未定义的(...)
react-addons-update
的{{1}}方法引发了这种情况。具体地,
update
据我所知,问题在于,当for (var k in spec) {
if (!(ALL_COMMANDS_SET.hasOwnProperty(k) && ALL_COMMANDS_SET[k])) {
nextValue[k] = update(value[k], spec[k]); // Error occurs here
}
}
,nextValue
和value
都设置为spec
时,people
设置为{ {1}}。当然,id并不存在于数组中(它是一组人)。
所以我的问题是,我可以传递什么而不是k
来执行此操作?根据{{3}}和this我应该做的事情。
答案 0 :(得分:1)
你去吧
update(state, {
people: {
$apply: (people) => people.map((person) => {
if(person.id !== action.person.id) {
return person;
}
return {
...person,
name: action.person.name
}
})
}
}