我正在尝试在反应提供程序中以 id 作为键的对象中添加对象。以下是用例。
const [memberList, setMemberList] = useState({
homeTeam: [],
awayTeam: [],
homeTeamClone: {},
});
我可以成功地将成员添加到数组中,但我更愿意将其添加到 homeTeamClone
对象中。
对象示例 = {"id":"3a21b0a-1223-46-5abe-67b653be5704","memberName":"Adam"}
我想要最终结果
homeTeamClone: {
"3a21b0a-1223-46-5abe-67b653be5704": {"id":"3a21b0a-1223-46-5abe-67b653be5704","memberName":"Adam"},
"3a21b0a-1223-46-5abe-67b653be5705": {"id":"3a21b0a-1223-46-5abe-67b653be5705","memberName":"Chris"},
"3a21b0a-1223-46-5abe-67b653be5706": {"id":"3a21b0a-1223-46-5abe-67b653be5706","memberName":"Martin"},
}
我尝试了 Object.assign(homeTeamClone, member)
但没有得到预期的结果。
提前致谢。
答案 0 :(得分:4)
如果问题是如何设置个人成员,您可以这样做:
const member = { id: '3a21b0a-1223-46-5abe-67b653be5704', memberName: 'Adam' };
setMemberList({
...memberList,
homeTeamClone: {
...memberList.homeTeamClone,
[member.id]: member,
},
});
在这种情况下,传播所有旧值并添加新值。 (如果再次添加相同 ID 的用户,对象值将来自新用户)