使用react-update时出错

时间:2016-10-28 14:51:45

标签: javascript reactjs redux

我的商店:

{
    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 } } nextValuevalue都设置为spec时,people设置为{ {1}}。当然,id并不存在于数组中(它是一组人)。

所以我的问题是,我可以传递什么而不是k来执行此操作?根据{{​​3}}和this我应该做的事情。

1 个答案:

答案 0 :(得分:1)

你去吧

update(state, {
    people: {
        $apply: (people) => people.map((person) => {
            if(person.id !== action.person.id) {
                return person;
            }

            return {
                ...person,
                name: action.person.name
            }
        })
    }
}