useEffect
useEffect(didUpdate);
副作用を有する可能性のある命令型のコードを受け付けます。
DOM の書き換え、データの購読、タイマー、ロギング、あるいはその他の副作用を、関数コンポーネントの本体(React のレンダーフェーズ)で書くことはできません。それを行うと UI にまつわる、ややこしいバグや非整合性を引き起こします。
代わりに useEffect を使ってください。useEffect に渡された関数はレンダーの結果が画面に反映された後に動作します。副作用とは React の純粋に関数的な世界から命令型の世界への避難ハッチであると考えてください。
デフォルトでは副作用関数はレンダーが終了した後に毎回動作しますが、特定の値が変化した時のみ動作させるようにすることもできます。
useEffectとは
useEffectを使うと、useEffectに渡された関数はレンダーの結果が画面に反映された後に動作します。 つまりuseEffectとは、「関数の実行タイミングをReactのレンダリング後まで遅らせるhook」です。
副作用の処理(DOMの書き換え、変数代入、API通信などUI構築以外の処理)を関数コンポーネントで扱えます。 今時、クラスコンポーネントは使わないですが、クラスコンポーネントでのライフサイクルメソッドに当たります。
- componentDidMount
- componentDidUpdate
- componentWillUnmount