web-dev-qa-db-ja.com

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,
   }
 }

これにより、更新を受信したエンティティが更新されますが、バックエンドによって返されない他のすべてのエンティティが削除されます。

action.payloadに含まれているエンティティのみを更新するようにngrxに指示する方法はありますか?

7
tilo

あなたはそんなに何度も広がるべきではありません。

多くの更新は、そこでスプレッドfuを使用できるパラメーターとして状態を取ります。

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