一般社団法人 全国個人事業主支援協会

COLUMN コラム

React を使っていると必ず出てくるのが useRef。名前は聞いたことがあるけれど、「どんな時に使うの?」と迷う人も多いでしょう。useRef は、再レンダーを引き起こさずに値を保持したい時、また DOM 要素へ直接アクセスしたい時 に活躍するフックです。

■useRef は「箱」をイメージすると理解しやすい

useRef を呼び出すと、.current というプロパティを持つオブジェクトが返ってきます。この .current に値を入れてもコンポーネントは再レンダーされません。そのため、レンダーに影響させたくないカウンタや前回値の保存に向いています。

const countRef = useRef(0);
countRef.current += 1; // 再レンダーなし

■DOM 要素を参照する

フォームへ自動フォーカスさせたいケースでは、DOM を直接触る必要があります。useRef は JSX の要素に ref 属性として渡すことで、その DOM を参照できます。

const inputRef = useRef(null);
useEffect(() => {
inputRef.current.focus();
}, []);
■useState との違い

useState は値が変わると再レンダーされます。一方、useRef は何度書き換えてもレンダーが走らないため、「変わっても画面に影響しなくてよい値」 に適しています。

■まとめ

useRef は「再レンダー不要の値の保持」「DOM へのアクセス」という2つの場面で非常に便利です。特にパフォーマンス最適化やフォーム処理では必須のツールなので、使いどころを理解して積極的に活用してみましょう。

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア