コンストラクタは 2 回実行されます。これは React の `StrictMode` のためです。

React StrictMode は、潜在的な問題を検出するためのツールであり、追加のコンポーネントチェックを開発モードで実行し、コンソールに警告メッセージを表示します。

React StrictModeでは、コンポーネントが2回レンダリングされます。1回目は潜在的な問題がないかチェックするため、もう1回はコンポーネントを実際にレンダリングするためです。つまり、React StrictModeを使用すると、コンポーネントのコンストラクタメソッドが2回呼び出されます。

最初のコンストラクタ呼び出しは検出フェーズで行われ、React StrictMode はコンポーネントの偽インスタンス(仮想インスタンス)を作成し、これを使用して非推奨の API の使用など、安全でないライフサイクルメソッドの存在をチェックします。

実際のレンダリング段階で、コンストラクタが2度目に呼び出され、React StrictModeは実際のコンポーネントインスタンスを作成し、ページ上にレンダリングします。

そのため、コンポーネントの constructor メソッドで副作用的な操作や特殊な処理が必要なロジックを実行していると、それが 2 回実行されてしまう可能性があります。このため、React の StrictMode を使用している場合は、このような副作用的な操作や特殊な処理が必要なロジックは componentDidMount ライフサイクルメソッドに移動させて、重複実行を防ぐことをお勧めします。

bannerAds