2017-02-22 1 views
2

間違った質問をしている可能性がありますので、コメントを残しておいてください。 another developerによって、reduxを使用しているときは、actions内ですべてのAPI呼び出しを行い、を作成する必要があります。しかし、時にはコンポーネントで直接呼び出しを行うと、TONコードが節約されると思います。このようなことのベストプラクティスはありますか?reduxを使用している場合、コンポーネントでAPIコールを直接行うことを避ける必要があります。

+0

Reduxを集中管理として使用することになっています。タスクのリストと詳細ビューを独立した状態のコンポーネントとして持つことができ、詳細ビューで「タスクxが完了しました」とリストの「タスクx進行中」の状態に入ることができます。オートコンプリート用のデータを取得するなどの簡単なアクションは、状態ストアの外部で発生する可能性があります。 – aitchnyu

+1

物事がコンポーネントの外にある場合、機能を拡張する方がずっと簡単だということを付け加えたいと思います。たとえば、コンポーネントの読み込み中にアプリケーション全体にスピナーを表示したい場合は、コンポーネント内部から行うのは非常に醜いでしょう。単純に変更されるものを可能にするために、多くのリファクタリングが行われます – Patrick

答えて

3

APIから取得しているデータが1つのコンポーネントでのみ消費される場合は、コンポーネントの一部(またはより良いことにコンテナコンポーネント)として書き込むこともできます。私は、あなたのAPI呼び出しの背後にある論理的根拠は、真実の単一のソースが維持されていることを保証することであると信じています(個人的には、反応/還元方法を使用する主な理由です)。複数のコンポーネントが消費するデータをAPIから取り込む場合は、reduxを使用して同じ状態がreduxによって維持され、それを使用するすべてのコンポーネントに渡されるようにします。

2

これは以前にReduxの作成者、Dan Abramovによって回答されました。Why do we need middleware for async flow in Redux?です。

要約:

それはあなたが同じアクションを実行するさまざまなコンポーネントを持っていますので、あなたには、いくつかのアクションをデバウンスしたい、または自動インクリメントIDのようないくつかのローカルな状態を保つ可能性がある大規模なアプリケーションでは、単に不便ですアクションクリエイターに近づくなど、メンテナンスの観点からは、アクションクリエーターを別々の関数に抽出するほうが簡単です。

関連する問題