如何一次更新所有实体 - NGRX?

How to update all entities at once - NGRX?

我需要更新所有实体中的 isExpanded 属性。我试图用 reduce() 来做到这一点,但得到了带有 v 键的嵌套对象:/

function updateAllIsExpanded(state, isExpanded): any {
  return Object.entries(state.entities).reduce(
    (p, [k, v]) => ({ ...p, [k]: { v, ...{ isExpanded } } }),
    {}
  );
}

在 ngrx 文档中我们可以找到类似 updateMany 的内容...但问题是我必须使用 idchange 创建对象数组...所以我想这不是一个好主意...

你需要...在v前面:

更新:

function updateAllIsExpanded(state, isExpanded): any {
  return Object.entries(state.entities).reduce(
    (p, [k, v]: [string, Object]) => ({ ...p, [k]: { ...v, ...{ isExpanded } } }),
    {}
  );
}

您可能正在寻找 map

map: Update multiple entities in the collection by defining a map function, similar to Array.map.

adapter.map(
  (entity) => ({...entity, isExpanded })),
  state
);