React の「useInsertionEffect」フック

Barbara Streisand
リリース: 2024-10-06 18:37:30
オリジナル
845 人が閲覧しました

The React `useInsertionEffect` Hook

React の useInsertionEffect フックの理解と使用

導入

React の useInsertionEffect フックは、useEffect の特殊なバージョンであり、その副作用が同じコンポーネント内の他の効果よりも前に実行されることを保証します。これは、実行前に完全にレンダリングされる DOM に依存する DOM 操作やサードパーティ ライブラリの統合に特に役立ちます。

useInsertionEffect を使用する場合

DOM の操作

フォーカスの設定、特定の要素へのスクロール、イベント リスナーのアタッチなど、コンポーネントのレンダリング直後に DOM を操作する必要がある場合。

サードパーティのライブラリ

ライブラリの関数を呼び出す前に DOM を準備する必要がある場合、useInsertionEffect によって適切なタイミングで実行されることが保証されます。

レイアウト効果

要素の寸法の測定や位置の計算など、コンポーネントのレイアウトに依存する効果の場合。

例: フィールドにフォーカスを設定する


import { useRef, useInsertionEffect } from 'react';

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

  useInsertionEffect(() => {
    if (inputRef.current) {
      inputRef.current.focus();
    }
  }, []);

  return (
    <div>
      <input ref={inputRef} type="text" />
    </div>
  );
}


ログイン後にコピー

この例では、useInsertionEffect を使用して、入力要素がレンダリングされるとすぐにフォーカスされるようにします。これにより、ユーザーはすぐに入力を開始できることが保証されます。

例: 動的スタイルルールの追加


import { useInsertionEffect } from 'react';

function MyComponent() {
  useInsertionEffect(() => {
    const style = document.createElement('style');
    style.textContent = `
      .my-custom-class {
        color: red;
        font-weight: bold;
      }
    `;
    document.head.appendChild(style);

    return () => {
      style.remove();
    };
  }, []);

  return (
    <div className="my-custom-class">
      This text will have red and bold styles.
    </div>
  );
}


ログイン後にコピー

この例では、useInsertionEffect を使用してドキュメントの先頭にカスタム スタイル ルールを動的に追加し、コンポーネント内の他のエフェクトよりも先に適用されるようにしています。

覚えておくべき重要なポイント

  • useInsertionEffect は useEffect に似ていますが、特定のタイミングが保証されています。
  • DOM の準備が必要な DOM 操作やサードパーティ ライブラリの統合によく使用されます。
  • 過度に使用するとパフォーマンスに影響を与える可能性があるため、useInsertionEffect を慎重に使用することが重要です。
  • レイアウトの完了後にエフェクトを同期して実行する必要がある場合は、useLayoutEffect の使用を検討してください。

結論

React の useInsertionEffect フックは、特に DOM 操作やサードパーティ ライブラリを扱う場合に、副作用が適切なタイミングで実行されるようにするための強力なツールです。その目的と使用法を理解することで、より信頼性が高くパフォーマンスの高い React コンポーネントを作成できます。

以上がReact の「useInsertionEffect」フックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート