React の useInsertionEffect フックは、useEffect の特殊なバージョンであり、その副作用が同じコンポーネント内の他の効果よりも前に実行されることを保証します。これは、実行前に完全にレンダリングされる DOM に依存する 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 を使用してドキュメントの先頭にカスタム スタイル ルールを動的に追加し、コンポーネント内の他のエフェクトよりも先に適用されるようにしています。
React の useInsertionEffect フックは、特に DOM 操作やサードパーティ ライブラリを扱う場合に、副作用が適切なタイミングで実行されるようにするための強力なツールです。その目的と使用法を理解することで、より信頼性が高くパフォーマンスの高い React コンポーネントを作成できます。
以上がReact の「useInsertionEffect」フックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。