2017-07-19 7 views
1

ページにアイテムを描画するReactコンポーネントがあります。アイテムはネットワークから取得されます。React/Reduxアプリケーションでのネットワークリクエストの位置付けロジック

これらの項目は、コンポーネントの読み込み時に取得してレンダリングする必要があります。

コンポーネントがロードされた後にアイテムを更新するメカニズムがあります。

私の最初の考えは、componentDidMount機能の中にネットワーク要求を配置することです。

これは、還元型および単方向のデータフロー/不変性に関連するベストプラクティスを破ってしまうでしょうか?

代わりに、私はストアにアクションを送信し、ネットワークリクエストを実行するためにreduxミドルウェアに依存する必要があります(これにより、最終的にストアが変更され、コンポーネントが再レンダリングされます)。

+1

データがローカルの場合は、データがグローバルの場合は 'componentWillMount'の内部で行い、次に' action'を呼び出すことによって行います。 – nrgwsth

+0

これを答えにすれば私は受け入れるでしょう... – Ben

+0

@anuragasaurusコンポーネントをWillMountに入れることで、コンポーネントのDOMは存在しません。ですから、非同期ネットワークコールがcomponentDidMountが呼び出される前に戻ることは可能でしょうか?これが起こった場合、私は予想外の動作をしますか?私は何が起こるかを視覚化することはできません.... – Ben

答えて

1

データがローカルの場合は、データがグローバルであればcomponentWillMountの内部で行い、次にアクションを呼び出すことでデータを行います。

したがって、基本的に非同期呼び出しをcomponentDidMountcomponentWillMountにすることは同じです。おそらく、componentDidMountが解雇される前にcomponentWillMountの非同期呼び出しが返されることはほとんどありません。しかし、あなたが同じ電話をcomponentDidMountにするより前に戻るでしょう。

componentDidMountで非同期呼び出しを行うと、コンポーネントが最初にデータなしでレンダリングされ、componentWillMountに暗黙的にデータが到着したときに再レンダリングされることが明らかになります。