問題タブ [normalizr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2939 参照

redux - Redux + Normalizr : Redux 状態での正規化されたエンティティの追加と削除

ネストされたエンティティが多数ある API 応答があります。私はnormalizrを使用して、redux の状態をできるだけフラットに保ちます。
たとえば。API の応答は次のようになります。

この応答はnormalizr、以下に示すスキーマを使用して正規化されます。

以下はそのときの様子です。

redux の状態は次のようになります。

を追加するアクションをディスパッチするとtagtagオブジェクトが追加されますが、配列state.tagsは更新されません。state.opening.tagsタグを削除するときも同じ動作です。

とを 3 つの異なるレデューサーで保持openingします。tagsdocs

これは状態の矛盾です。状態の一貫性を保つには、次の方法が考えられます。

  1. タグを更新するアクションをディスパッチし、tagsリデューサーとopeningリデューサーの両方でリッスンし、続いて両方の場所でタグを更新します。
  2. タグで開口部を更新するパッチ リクエストは、開口部の応答を返します。応答を正規化し、適切な一貫性を持ってタグやオープニングなどを設定するアクションを再度ディスパッチできます。

これを行う正しい方法は何ですか。エンティティは、関連するエンティティへの変更を監視して、変更自体を行うべきではありません。または、そのようなアクションに従うことができる他のパターンがあります。