【React】useEffectの処理が2回実行される時の対処方法

はじめに

Reactのアプリケーションを「npx create-react-app」コマンドで作成して useEffectを設定すると困った現象が発生します。

useEffect(() => {
    console.log("useEffectが呼び出されました");
}, []);

どうやらuseEffectの処理が2回実行されている模様。
初期化処理に重たい処理を入れているとレスポンスの悪化が懸念されます。

原因はデフォルトで入っているStrictMode

React 18のStrictModeは2回レンダリングされる仕様の模様。 簡単な対処方法は下記の様になっているindex.jsの「<React.StrictMode>」を削除します

index.js

import React from "react";
import ReactDOM from "react-dom/client";
import "./index.css";
import App from "./App";
import reportWebVitals from "./reportWebVitals";

const root = ReactDOM.createRoot(document.getElementById("root"));
root.render(
  // <React.StrictMode>
    <App />
  // </React.StrictMode>
);

// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();