【问题标题】:Error using react-update使用反应更新时出错
【发布时间】:2017-03-11 12:01:28
【问题描述】:

我的商店:

{
    people: [
        {
            id: 12345,
            name: Person 1
        },
        {
            id: 54321,
            name: Person 2
        }
    ]
}

我正在尝试更新 Person 1 上的 name 属性。我正在使用 react-addons-update,如下所示:

update(state, {
    people: {
        [action.person.id]: {
            name: action.person.name
        }
    }
}

其中action.person 是一个对象{ id: 12345, name: New name }

但是,我不断收到错误消息:

Uncaught (in promise) TypeError: Cannot read property 'name' of undefined(...)

这是在react-addons-updateupdate 方法中抛出的。具体来说,

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
    }
}

据我所知,问题是当nextValuevaluespec 都设置为people 时,k 设置为action.person.id。当然,该 id 不存在于数组中(它是一个人数组)。

所以我的问题是,我可以传入什么而不是 [action.person.id] 来执行此操作?根据thisthis 我所拥有的应该可以工作。

【问题讨论】:

标签: javascript reactjs redux


【解决方案1】:

给你

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

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

【讨论】:

    猜你喜欢
    • 2018-12-28
    • 2022-08-08
    • 1970-01-01
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多