ホームページ >ウェブフロントエンド >jsチュートリアル >Callback Refs vs. UseEffect:いつ使用するか

Callback Refs vs. UseEffect:いつ使用するか

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-29 18:34:15627ブラウズ

Callback Refs vs. useEffect: When to use which

Reactコンポーネントの開発では、副作用管理とDOMの相互作用が重要です。

およびコールバックrefは2つの強力なツールです。 useEffectこれは、さまざまな副作用に対処するための多機能フックであり、Recovery Refは特定のシナリオでより直接的で効率的な方法を提供します。 useEffect

return Ref詳細な説明

REREFを使用すると、関数コンポーネントの実際のDOM要素に直接アクセスできます。コールバック関数を要素の

属性に渡します。この調整関数は、パラメーターとしてDOM要素を受信し、次のことを可能にします。 ref

直接操作DOM:フォーカスを設定し、要素のサイズ、アプリケーションスタイルなどを調整します。
    3番目のパーティライブラリとの相互作用:DOM要素の直接操作ライブラリ(ギャラリー、キャンバスライブラリなど)と統合されています。
  • いつコールバックrefを使用するか

直接dom操作:

    DOMに関連するロジックを設定またはクリーンアップする必要があります(フォーカス管理や調整要素など)。 REFを返すことで、DOM要素に直接アクセスして、正確で効率的な操作を実現できます。
    • 3番目のパーティライブラリ:
  • DOM要素の直接操作(統合ギャラリー、処理キャンバスの相互作用など)と初期化または相互作用します。 REFを返すことにより、DOM要素をライブラリのAPIに直接渡すことができます。
    • 再レンダリング依存関係を避けます:
  • 依存項目は、パフォーマンスに影響を与える不必要な再レンダーにつながる可能性があります。 Callback Refを使用することにより、
    • useEffect useEffect例:フォーカスマネジメント
    例:下部に転がします

return ref:

<code class="language-javascript">import React, { useRef } from 'react';

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

  const handleRef = (element) => {
    if (element) {
      element.focus();
    }
  };

  return <input ref={handleRef} />;
}</code>

正しい方法を選択します
<code class="language-javascript">import React, { useState, useRef, useCallback } from 'react';

function Chat() {
  const [messages, setMessages] = useState([]);
  const messagesEndRef = useRef(null);

  const scrollToBottom = useCallback(() => {
    if (messagesEndRef.current) {
      messagesEndRef.current.scrollIntoView({ behavior: 'smooth' });
    }
  }, [messages]); 

  const handleSendMessage = () => {
    setMessages([...messages, "New Message"]); 
    scrollToBottom(); 
  };

  return (
    <div>
      {messages.map((msg, index) => (
        <div key={index}>{msg}</div>
      ))}
      <div ref={messagesEndRef} />
      <button onClick={handleSendMessage}>Send</button>
    </div>
  );
}</code>

直接DOM操作の場合、重要な状況への不必要な再レンダリングを避けるために、通常、Refを回復することが推奨されます。 useEffect

シーンやパフォーマンスが主な注意のポイントではないため、「Effect」は適切な選択です。
<code class="language-javascript">import React, { useState, useEffect, useRef } from 'react';

function Chat() {
  const [messages, setMessages] = useState([]);
  const messagesEndRef = useRef(null);

  useEffect(() => {
    scrollToBottom();
  }, [messages]);

  const scrollToBottom = () => {
    if (messagesEndRef.current) {
      messagesEndRef.current.scrollIntoView({ behavior: 'smooth' });
    }
  };

  const handleSendMessage = () => {
    setMessages([...messages, "New Message"]); 
  };

  return (
    <div>
      {messages.map((msg, index) => (
        <div key={index}>{msg}</div>
      ))}
      <div ref={messagesEndRef} />
      <button onClick={handleSendMessage}>Send</button>
    </div>
  );
}</code>

コールバックREFと「UseEffect」の利点を理解することにより、Reactコンポーネントの副作用を管理し、DOMと対話する方法について賢明な決定を効果的に決定できます。

以上がCallback Refs vs. UseEffect:いつ使用するかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。