如何使用 ngrx-entity 更新实体子集?

How to update a subset of entities with ngrx-entity?

我正在使用对远程后端的 HTTP 补丁请求更新一组实体。来自后端的响应仅包括更新后的实体(即,并非所有实体)。

我使用实体状态适配器设置我的减速器并使用 updateMany 更新我的实体:

case settings.SettingsActionTypes.UpdateSettingsSuccess: {
   return {
     ...state,
     ...adapter.updateMany(action.payload.map((category) => Object.assign({}, {id: category.name, changes: category})), state),
     loaded: true,
     loading: false,
   }
 }

虽然这会更新收到更新的实体,但会删除后端未返回的所有其他实体。

有没有办法告诉 ngrx 只更新 action.payload 中包含的实体?

你不应该传播这么多次。

Update many 将状态作为参数,您可以在其中使用您的 spread fu。

return adapter.updateMany( 
   action.payload.map((category) => Object.assign({}, {id: category.name, changes: category})), 
   { ...state, loaded: true, loading: false }
);