初期レンダリングで useEffect フックが実行されないようにする方法
React のドキュメントには、componentDidUpdate() ライフサイクル メソッドが実行中に呼び出されないと記載されています。最初のレンダリング。ただし、 useEffect フックを使用して、componentDidUpdate() をシミュレートすると、最初のレンダリングを含むすべてのレンダリングで実行されるように見えます。
説明
useEffect フックは、その後に実行されます。最初のものも含め、すべてのレンダリング サイクル。 ComponentDidUpdate() メソッドとは異なり、最初の実行をスキップするための組み込みチェックはありません。
解決策
これに対処するには 2 つのアプローチがあります。
1. useRef の使用
useRef フックを使用して、useEffect 関数が初めて呼び出されたかどうかを追跡できます。
const isFirstRender = useRef(true); useEffect(() => { if (isFirstRender.current) { isFirstRender.current = false; return; // Skip the first render } console.log("Component did update"); }, [<dependencies>]);
2. useLayoutEffect
useLayoutEffect の使用は useEffect に似ていますが、DOM 操作の後に発生するcomponentDidUpdate() と同じフェーズで実行されます。
useLayoutEffect(() => { console.log("Component did update"); }, [<dependencies>]);
以上がReact の最初のレンダリングで useEffect が実行されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。