← inaro.devAI駆動開発 学習ツール
中級

useRefとDOM操作

なぜ学ぶか: 「ボタンを押したら入力欄にカーソルを当てたい」— stateでは表現できないこの操作に使うのがuseRefです。まず例を見てください。

まずはこの例を見てみましょう

function FocusForm() {
  const inputRef = useRef<HTMLInputElement>(null); // 入力欄への「参照」の箱

  return (
    <div>
      <input ref={inputRef} />
      <button onClick={() => inputRef.current?.focus()}>
        入力欄へカーソルを移す
      </button>
    </div>
  );
}

ref={inputRef}で入力欄と箱を結びつけ、inputRef.currentで実物の入力欄を直接操作しています。

useRef=画面を描き直さない箱

.currentで読み書きします。値を変えても画面は描き直されない — これがstateとの決定的な違いです。

用途は「画面の実物への直接アクセス」

例のように、フォーカスを当てるなど「見た目のデータではなく、実物の部品を操作したい」ときの窓口です。

stateとrefの使い分け

画面に表示する値 → state。表示に関係ない値(タイマーのIDなど)や実物への参照 → ref。この2択で迷いません。

ステップ 1 / 3

※ カリキュラムの内容はAIが生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。