0
我有一個Immutable.js收集,看起來像這樣:鏈接Immutable.js方法與深度嵌套地圖/列表
{ groups: Immutable.Map({
{
id: 1,
members: Immutable.List
},{
id: 2,
members: Immutable.List
}
})
}
我得到從我的服務器更新的成員陣列和組ID。我如何通過id找到正確的組,然後更新成員prop,然後返回一個新的groups
集合?
我有這樣的東西到目前爲止,不起作用。
return state.update('groups', groups => {
for (let group of groups) {
if (group.id === action.id) {
group.members = Immutable.fromJS(action.members);
// not sure what I would do with updated here
//const updated = group.members.set('members', action.members);
}
}
return groups;
};
此外,試過這個,它似乎並沒有完成,因爲console.log
從來沒有觸發。
let update = state.get('groups')
.find(group => group.id === action.id)
.set('members', action.members)
console.log(update) // nothing, no error either
下工作,但必須有比使用fromJS
然後toJS
一個更好,更優雅的方式。
return state.update('groups', groupsImmutable => {
const groups = groupsImmutable.toJS();
for (let group of groups) {
if (group.id === activeId) {
group.members = action.members;
break;
}
}
return Immutable.fromJS(groups);
});
謝謝!
它是否工作做'return state.setIn(['groups',action.id,'members'],action.members)'? –
@JeremyS。這沒有用。我結束了使用最後一個選項 – Yoshi