ホームページ  >  記事  >  ウェブフロントエンド  >  React の最初のレンダリングで useEffect が実行されるのはなぜですか?

React の最初のレンダリングで useEffect が実行されるのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-16 02:08:02464ブラウズ

Why Does useEffect Run on Initial Render in React?

初期レンダリングで 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 サイトの他の関連記事を参照してください。

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