3

非同期アクション クリエーターでは、サーバーからデータをフェッチします。私のユースケースでは、データが適切にフォーマットされていないため、UI で使用するためにデータを変換する必要があります。

質問 : 私は

  1. 変換されたデータで成功アクションをディスパッチする前に、データが到着した直後にデータを変換しますか?

    fetch("some/url")
    .then(res => dispatch(successActionCreator(transform(res)))
    
  2. 生データを使用して成功アクションをディスパッチして保存し、内部で変換しますmapStateToPropsか?

  3. 生データを使用して成功アクションをディスパッチし、レデューサーで変換しますか?

1.では、必要なときにデータが変換され、API データ形式と Redux ストアが切り離されているように思えます。ただし、変換ロジックはデータ フェッチ アクションにあります。

2.では、非同期アクション クリエーターは単純なままで、ロジックはまったくなく、マッピングは UI レイヤーで行われます。mapStateToPropsしかし、これは、レンダーごとに呼び出されるため、reselect などで最適化する必要があることを意味します。

3.では、非同期アクション クリエーターは単純なままで、ロジックはまったくありませんが、アクションは API データ形式に結合されています。

私は 1 に行きます(とにかく変換​​の単体テストを行います) が、完全に満足しているわけではありません。なにか提案を ?ありがとう !

-編集:質問は独断的な回答の対象であるため、ここで自分自身に答えています。コメントに記載されているすべての理由と回答の1つから、1.を使用します。

4

1 に答える 1

3

選択肢 1 が正解です。

生のサーバー応答を渡す場合、クライアントをサーバー側の実装に結合しています。この種の変換を分離することは、アプリケーションの将来の保守性にとって重要です。

于 2016-02-25T13:48:53.813 に答える