リモートバックエンドへの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に指示する方法はありますか?
あなたはそんなに何度も広がるべきではありません。
多くの更新は、そこでスプレッドfuを使用できるパラメーターとして状態を取ります。
return adapter.updateMany(
action.payload.map((category) => Object.assign({}, {id: category.name, changes: category})),
{ ...state, loaded: true, loading: false }
);