「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > useRef の秘められた力: React プロジェクトに useRef が不可欠な理由

useRef の秘められた力: React プロジェクトに useRef が不可欠な理由

2024 年 11 月 9 日に公開
ブラウズ:492

The Hidden Power of useRef: Why It’s Essential in Your React Projects

導入

React アプリのパフォーマンスの低下に悩んだり、複雑な DOM 操作と戦ったりしたことはありませんか?これらはよくある頭痛ですが、我慢する必要はありません。パフォーマンスを簡単に最適化し、再レンダリングを行わずに DOM 要素を操作できる世界を想像してみてください。 useRef は、まさにそれを行うシンプルかつ強力な React フックです。

useRef が重要なのはなぜですか?

一見すると、useRef は広大な React エコシステムの単なるフックのように見えるかもしれませんが、過小評価しないでください。これは、2 つの大きな問題点に対する秘密兵器です:

  1. 再レンダリングをトリガーすることなく、簡単な DOM 操作
  2. UI の更新を必要としない値を保持することで、パフォーマンスが向上します
useRef は、それ自体に常に注意を向けることなく物事を整理する強力なアシスタントと考えてください。必要な値または DOM ノードを保持し、再レンダリングや手間をかけずにサイレントに実行します。

useRef を簡単に理解する

単純化しましょう。 useRef は、値が変更されるたびに React コンポーネントが再レンダリングされることなく、貴重なもの (DOM 要素や頻繁に変更される値など) を入れて後で使用できる保管ボックスのようなものです。


import { useRef, useEffect } から 'react'; 関数 ExampleComponent() { const inputRef = useRef(null); useEffect(() => { inputRef.current.focus(); // コンポーネントがマウントされるときに入力を自動的にフォーカスします }、[]); return ; }
import { useRef, useEffect } from 'react';

function ExampleComponent() {
  const inputRef = useRef(null);

  useEffect(() => {
    inputRef.current.focus();  // Automatically focuses the input when the component mounts
  }, []);

  return ;
}
この例では、inputRef は DOM への直接行のようなものです。再レンダリングをトリガーせずに、DOM 要素を直接操作できます。では、なぜこれがそれほど便利なのでしょうか?

実際の useRef の実践例

1.再レンダリングを行わない DOM 操作

ページが読み込まれるとすぐに入力フィールドにフォーカスを当ててみたことはありますか?あるいは、ボタンをクリックして要素をスクロールして表示する必要があるかもしれません。ここで useRef が威力を発揮します。 DOM 要素を直接操作できます。不必要な再レンダリングを強制する面倒な状態更新は必要ありません。

例: ボタンをクリックしてセクションまでスクロール
import { useRef } から 'react'; 関数 ScrollComponent() { constセクションRef = useRef(null); constscrollToSection = () => { SectionRef.current.scrollIntoView({ 動作: 'smooth' }); }; 戻る (
ここにコンテンツがいくつかあります...
ターゲットセクション
> ); }
import { useRef, useEffect } from 'react';

function ExampleComponent() {
  const inputRef = useRef(null);

  useEffect(() => {
    inputRef.current.focus();  // Automatically focuses the input when the component mounts
  }, []);

  return ;
}
この簡単な例では、DOM を操作するときにコンポーネントが再レンダリングされるのを防ぎ、パフォーマンスとユーザー エクスペリエンスを向上させます。

2.再レンダリングせずに可変値を保存する

ボタンがクリックされた回数を追跡したいとします。これに状態を使用すると、カウントが変更されるたびに再レンダリングがトリガーされます。ただし、useRef を使用すると、不必要な再レンダリングを発生させることなく値を更新できます。

例: 再レンダリングを行わずにクリック数をカウントする
import { useRef } から 'react'; 関数 ClickCounter() { const clickCount = useRef(0); const handleClick = () => { clickCount.current = 1; console.log(`${clickCount.current} 回クリックされました`); }; return ; }
import { useRef, useEffect } from 'react';

function ExampleComponent() {
  const inputRef = useRef(null);

  useEffect(() => {
    inputRef.current.focus();  // Automatically focuses the input when the component mounts
  }, []);

  return ;
}
ここでは、clickCount はリアルタイムで更新されますが、useRef に保存されるため、コンポーネントは再レンダリングされず、パフォーマンスがよりスムーズになります。

なぜ気にする必要があるのですか?

小さな状態更新ごとにコンポーネント ツリー全体が再レンダリングされる、大規模で複雑なアプリケーションで作業しているところを想像してください。時間の経過とともに、これによりアプリのパフォーマンスが低下し、操作が遅くなり、ユーザーがイライラしてしまいます。 useRef を使用すると、変更可能な値を保持し、状態の再レンダリングのオーバーヘッドなしで DOM 要素を直接操作できます。結果?より高速で応答性の高いアプリ。

よくある誤解

あなたは疑問に思っているかもしれません:「useRef を使用するのは、React の宣言的な性質を不正行為するようなものではないでしょうか?」

実は、違います。 React はステート駆動型 UI がすべてですが、useRef は別の目的を果たします。これにより、React の反応性システムと競合することなく DOM 要素と可変値を操作する方法が得られます。

使用に関するベスト プラクティス参照

  1. DOM の直接操作
    useRef を使用して、入力フィールドにフォーカスしたり、アニメーションをトリガーしたり、セクションにスクロールしたりするなど、DOM を直接操作します。これにより、不必要な再レンダリングを回避し、アプリの動作をスムーズに保つことができます。

  2. ステートのような動作に useRef を過度に使用しないでください
    useRef は、UI に影響を与えない値を追跡するのに優れています。ただし、UI が値に依存している場合は、必要に応じて useState を使用して再レンダリングをトリガーすることを推奨します。

  3. アニメーションの最適化
    頻繁な DOM 更新が必要なアニメーションの場合は、useRef を使用して参照を保存します。これにより、アニメーション ロジックによって不要な再レンダリングが発生することがなくなり、よりスムーズなトランジションが実現します。

こう考えてみてください...

タスクに集中しようとするたびに中断されることを想像してみてください。それはどれほどイライラするでしょうか? React アプリで不必要な再レンダリングを許可すると、まさにそれが起こります。 useRef は、アプリがユーザー エクスペリエンスを中断することなく舞台裏で更新を処理できるようにする「Do Not Disturb」サインのようなものです。

要約すれば

useRef を使用すると、パフォーマンスを向上させ、不要な再レンダリングを防ぎ、DOM 要素を直接操作できます。これは、高性能 React アプリケーションを構築するために不可欠なツールです。

最終ポイント

React アプリのパフォーマンスを大幅に向上させる準備はできましたか? useRef をマスターすると、不必要な再レンダリングを回避し、DOM との対話を最適化し、よりクリーンで効率的なコードを作成できるようになります。今すぐ useRef を使い始めて、アプリがどれほどスムーズに動作するかを確認してください。

useRef でワークフローを変革

アプリがより高速に、よりスムーズに実行され、複雑な操作が楽に処理されるところを想像してみてください。それが useRef の威力です。機能豊富なダッシュボードを構築している場合でも、単純なフォームを構築している場合でも、このフックはパフォーマンスと DOM 操作を制御し続けるのに役立ちます。

リリースステートメント この記事は、https://dev.to/paharihacker/the-hidden-power-why-its-ists-essential-in your-react-projects-3f6n?1に再現されています。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3