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 (); }
この例では、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 (This text will have red and bold styles.); }
この例では、useInsertionEffect を使用してドキュメントの先頭にカスタム スタイル ルールを動的に追加し、コンポーネント内の他のエフェクトよりも先に適用されるようにしています。
React の useInsertionEffect フックは、特に DOM 操作やサードパーティ ライブラリを扱う場合に、副作用が適切なタイミングで実行されるようにするための強力なツールです。その目的と使用法を理解することで、より信頼性が高くパフォーマンスの高い React コンポーネントを作成できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3