2016-09-05 10 views
0

このリンクの通りhttps://facebook.github.io/react/tips/initial-ajax.htmlReactJS:componentDidMountでデータをフェッチするのがなぜですか?

私は優れた作品を作っています。彼らが言うように私はcomponentDidMountフックで私のデータを取ってくる。私はちょうどその理由について質問しました。

コンポーネントをマウントした後にデータを取得するのはなぜですか? setState()にデータが設定されると、再レンダリングが終了したようです。

constructor()にデータをフェッチして、データで初期状態を設定するだけではどうですか。それはちょうど1レンダリングではないでしょうか?バーチャルDOMのためにレンダリングが部分的にしか行われていなくても安価です。

答えて

1

フェッチは一般に非同期的に実行されるため、componentWillMountまたはcomponentDidMountの範囲内にあるにもかかわらず常に2番目のレンダリングが発生します。

私は、ブラウザーに依存したソートの実装を使用している可能性があるので、componentDidMountに入れることを推奨していると思います。サーバー上(つまりノード内)でコンポーネントを実行/レンダリングするときには、componentWillMountのみが実行されるため、ブラウザー/ DOMに依存する機能を使用していると落ちる可能性があります。他のライフサイクルメソッド(すなわちcomponentDidMount)はサーバー上で実行されないため、私は安全と推奨を考えています。一般的に、私はDOMアクセスを行う必要があるときに、より便利であると感じました。ユニバーサルなAjaxライブラリを使用してください(ノード/ブラウザ上で動作します)。これはおそらくあなたの心配ではありません。

+0

これは意味がありますが、同期するコンポーネントのライフサイクルについては考えていませんでした –

+1

これはおそらくコンストラクターで設定できない理由と同じ理由が考えられますか? –

+0

私はそう思います。 – ctrlplusb