7

我正在使用对远程后端的 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?

4

1 回答 1

4

你不应该传播这么多次。

更新许多将状态作为参数,您可以在其中使用您的传播 fu。

return adapter.updateMany( 
   action.payload.map((category) => Object.assign({}, {id: category.name, changes: category})), 
   { ...state, loaded: true, loading: false }
);
于 2018-01-16T13:13:13.470 回答