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が生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。