【发布时间】:2016-12-27 23:02:00
【问题描述】:
在我的 redux reducer 中使用 Object.assign 更新对象的内部元素时,我需要一点帮助。
为了更好地解释这个场景,我使用的是 NBA 球队。我的 redux 商店中有一个 NBA 对象。我现在尝试仅更新特定团队的 teamMembers。我的 NBA 对象如下所示:
{
teams: [
{
teamId: 123,
teamName: "Los Angeles Lakers"
teamMembers: [
{id: "kbryant", fullName: "Kobe Bryant"},
{id: "bingram", fullName: "Brandon Ingram"}
]
},
{
teamId: 234,
teamName: "Miami Heat"
teamMembers: [
{id: "cbosh", fullName: "Chris Bosh"},
{id: "tjohnson", fullName: "Tyler Johnson"}
]
}
]
}
我通过我的操作(即 action.teamId 和 action.members)将 teamId 和 members 传递给 reducer。
这是我目前所拥有的:
Object.assign({}, state, {
nba: Object.assign({}, state.nba, {
teams: Object.assign({}, state.nba.teams, {
teamId[action.teamId] // I'm stuck here...
})
})
})
如何更新特定团队的 teamMembers?我知道我快到了,但需要一点帮助。谢谢。
【问题讨论】:
-
不是重复的。该问题的建议也不适用。我只使用 Object.assign。
-
您可以将相关的
Object.assign调用包装在IIFE 中并在其中做一些工作,包括任何数据突变。只需确保对Object.assign()生成的新对象进行变异并return。 -
您是否尝试在
teamMembers中添加或删除对象? -
@Sam 您正在尝试实现相同的目标,并且使用 immutability-helper 中的
update是一个有效的解决方案。
标签: javascript reactjs redux