フロントエンドの用語一覧へ
このページの目次
フロントエンド中級図解あり

再描画とは?

最終更新:2026/08/18

3秒でわかる

state や props が変わったとき、React がコンポーネント関数をもう一度実行して画面を更新する動き。遅さの原因を追うときの起点になります。

30秒図解

state、props、親の再描画のいずれかが起きると関数を再実行し、前回のJSXとの差分がある部分だけDOMへ反映する
再描画はコンポーネント関数の再実行です。DOMは前回のJSXとの差分がある部分だけ更新されます。

もう少し詳しく

どういうものか

React が、あるコンポーネントの関数をもう一度実行し直す動きを再描画と呼びます。きっかけは主に 3 つで、自分の state が変わったとき、親から渡された props が変わったとき、そして親そのものが再描画されたときです。関数が再実行されると新しい JSX が返り、React はそれを前回の結果と比べて、違っている部分だけを実際の DOM に反映します。

なぜ必要か

画面はデータの写像として書きたいものです。「ボタンを押したらこの span の textContent を書き換える」と手続きで書くと、状態が増えるほど更新漏れが起きます。React は state を変えるだけで画面が追従する形にすることで、この漏れを構造的に無くしています。再描画はその仕組みの実行部分そのものです。

具体例

function Counter() { const [count, setCount] = useState(0); console.log("Counter が再実行された", count); return ( <div> <p>{count}</p> <button onClick={() => setCount(count + 1)}>押す</button> <Heavy /> </div> ); } // Counter が再描画されると Heavy も再実行される。 // props が何も変わっていなくても関数は走る。 const Heavy = React.memo(function Heavy() { return <p>重い表示</p>; });

つまずきやすいところ

  • 再描画は DOM の書き換えと同じではありません。関数が再実行されても、返った JSX が前回と同じなら DOM は触られません。console.log が出るからといって画面が作り直されているわけではない、という点を最初に分けて考えます。

  • useEffect の依存配列オブジェクト配列を直接入れると、毎回の再描画で新しい参照が作られるため中身が同じでも毎回発火します。無限ループの定番の原因です。

  • 親が再描画されると、props が変わっていない子も既定で再実行されます。止めたい場合だけ React.memo を使います。
  • 似た用語との違い

    用語誰の仕事か
    再描画React がコンポーネント関数を再実行する
    差分検出React が前回の JSX と比べて更新箇所を絞る
    リフロー / リペイントブラウザが実際にレイアウト計算と描画をする

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地再描画フロントエンド

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    この用語を扱うコース

    コース

    React入門:JSX・コンポーネント・props

    22レッスン
    コース

    TypeScriptでReactとAPIを扱う

    23レッスン
    コース

    React道場 ハレノヒ珈琲をモダン化する10問

    10レッスン
    Reactコースの全編を見る