私はreduxをnormalizrで使用してサーバーからの応答を正規化します。基本的にreal-worldの例に従ってください。この方法でentities
減速機は非常に簡単です、ちょうど応答をマージします。今私が持っている問題は、delete
操作のようなものです。私はこれを見つけましたissue#21 of normalizr repoしかし、これを解決する方法をまだ理解できませんでした。例えば、Redux + Normalizr detached(deleted)操作
現在の状態が
{
entities:
product_categories: {
...
13: {
...
products: ["1", "2"], <--------------- [i] Current state
...
}
},
products: {
1: {
id: "1"
}
}
}
正規化された応答は、あなたが見ることができるように、バックエンドAPIはちょうどで、このカテゴリに属しすべての製品IDを返し
{
...
product_categories: {
...
13: {
...
products: ["1"], <---------------- [2] Normalized result
}
...
}
ですこの場合「2」が切り離される。 'エンティティ'レデューサーがこのレスポンスをマージすると、「2」は依然としてハングしています。今はページをリロードするだけですが、このケースを処理するにはより良い方法があるのだろうかと思います。
entities
では、実際の例のようにマージします。
return merge({}, state, action.payload.entities);
これは本当に良い質問です:これらのアプローチは、よく私はこのようなアクションを発射削除するhere
今を議論してきました。 IMOは、Redux + Normalizrアーキテクチャ全体に大きな欠陥があることを指摘しています。確かにあなたは単一の根源を持っていますが、まさに真実な表現ではありません。削除フラグの使用を要求することは、あまりにもひどいです。 –