У меня есть коллекция Immutable.js, которая выглядит следующим образом:методов Chaining Immutable.js с глубоко вложенными Maps/Списки
{ groups: Immutable.Map({
{
id: 1,
members: Immutable.List
},{
id: 2,
members: Immutable.List
}
})
}
я получаю обновленные член массива и идентификатор группы от моего сервера. Как найти правильную группу по идентификатору, а затем обновить опору членов, а затем вернуть новую коллекцию 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