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

React の初期レンダリングで useEffect が実行されないようにするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-26 20:03:10943ブラウズ

How to Prevent useEffect from Running on Initial Render in React?

初期レンダリングで useEffect フックが実行されないようにする

React では、useEffect フックは、componentDidUpdate ライフサイクル メソッドと同様の機能を提供します。ただし、componentDidUpdate とは異なり、useEffect は最初のレンダリングを含むすべてのレンダリング後に実行されます。これは、後続の更新後にのみエフェクトを実行したい場合には望ましくない動作となる可能性があります。

最初のレンダリングで useEffect が実行されないようにするには、次の 2 つのアプローチを活用できます。

Using useRef フック

useRef フックを使用すると、レンダリング間で持続する可変値を保存できます。これを使用して、 useEffect 関数が初めて呼び出されたかどうかを追跡できます。

const firstUpdate = useRef(true);
useLayoutEffect(() => {
  if (firstUpdate.current) {
    firstUpdate.current = false;
    return;
  }

  // Run the effect after the initial render
  console.log("useEffect ran after first render");
}, []);

useLayoutEffect フックを使用する

あるいは、useLayoutEffect を使用することもできます。フック。 useEffect とは異なり、useLayoutEffect は DOM 更新が発生した後に同期的に実行されます。これは、componentDidUpdate と同じ動作です。

useLayoutEffect(() => {
  // Run the effect after the initial render
  console.log("useLayoutEffect ran after first render");
}, []);

これらのアプローチは、最初のレンダリングで useEffect が実行されるのを効果的に防ぎ、効果が後続のレンダリング後にのみ発生するようにします。更新 (componentDidUpdate.

と同様)

以上がReact の初期レンダリングで useEffect が実行されないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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