useEffectと副作用
なぜ学ぶか: useEffectは、Reactの中でもつまずきやすいフックです。使いどころは「画面を出したあとに、外の世界とやり取りする」こと。AIもここをよく間違えるので、「このuseEffect、本当に必要?」と気づけるようになるのがゴールです。
まずはこの例を見てみましょう
function Clock() {
const [now, setNow] = useState(new Date());
useEffect(() => {
// 画面を出したあと、1秒ごとに時刻を更新するタイマーを動かす
const timer = setInterval(() => setNow(new Date()), 1000);
// 後片付け: 画面が消えるときにタイマーを止める
return () => clearInterval(timer);
}, []); // ← [] は「最初の1回だけ動かす」という意味
return <p>現在時刻: {now.toLocaleTimeString()}</p>;
}「画面を出したあとにタイマーを動かし、消えるときに止める」— useEffectの典型的な使い方です。
画面を出したあとの処理を書く場所
データ取得やタイマーなど、「画面を描くこと」以外の仕事を書きます。(こういう処理を難しい言葉で「副作用」と呼びます)
末尾のカッコ=いつ動くか
例の[]は「最初の1回だけ」。[count]なら「countが変わるたび」。まずは[]の形だけ覚えればOKです。
後片付けを忘れない
例のreturn () => clearInterval(timer)が後片付けです。忘れると、画面が消えた後もタイマーが裏で動き続けます。
AIがよくやるミス:いらないuseEffect
「他の値から計算できるもの」をわざわざuseEffectで作っている → その場で計算すれば済みます。「これ消せる?」が定番の気づきです。
ステップ 1 / 3
※ カリキュラムの内容はAIが生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。