[今さら始める React マスター #5] useEffectとコンポーネントの副作用
ReactのuseEffectを使って、データ取得、タイマー、画面表示後の処理を扱う基本を説明します。
[今さら始める React マスター #5] useEffectとコンポーネントの副作用
useEffectとは?
useEffect は、Reactコンポーネントの描画後に実行したい処理を書くためのHookです。
たとえば次のような処理に使います。
- APIからデータを取得する
- タイマーを開始する
- ブラウザのタイトルを変える
- イベントリスナーを登録する
基本形
1
2
3
4
5
6
7
8
9
import { useEffect } from "react";
function App() {
useEffect(() => {
console.log("画面に表示されました");
}, []);
return <h1>Hello</h1>;
}
第二引数の [] は依存配列です。空配列の場合、初回表示時に一度だけ実行されます。
Stateが変わったときに実行する
1
2
3
useEffect(() => {
document.title = `Count: ${count}`;
}, [count]);
依存配列に count を入れると、count が変わるたびに処理が実行されます。
クリーンアップ
タイマーやイベントリスナーを使う場合は、後片付けが必要です。
1
2
3
4
5
6
7
useEffect(() => {
const id = setInterval(() => {
console.log("tick");
}, 1000);
return () => clearInterval(id);
}, []);
return した関数がクリーンアップ処理になります。
学習のポイント
useEffect は便利ですが、何でも入れる場所ではありません。まずは「画面に表示された後に外部とやり取りする処理」と考えると理解しやすいです。
この投稿は投稿者によって CC BY 4.0 の下でライセンスされています。
