今さらReact.jsを学んでみたら、ログが2回出力されて焦った話(StrictMode)

こんにちは!Takuya.B(@TB_IQ)です。

私はこれまでずっとPHPを触ってきており、なぜか世間で流行しているJavaScriptに対して苦手意識がありました。

ですが、個人開発を進めるにあたってReactを使う必要がでてきたので、今少しずつ学び始めています。

記事を書いている今となってはショウモナイことですが、今日はHello, worldの動作確認するためにログを出力したら2回出力されて少し焦った話をします。

スポンサーリンク

StrictModeとは

React公式サイトでは以下のように紹介されていました。

<StrictMode> は、開発環境においてコンポーネントの一般的なバグを早期に見つけるのに役立ちます。

つまり2回レンダリングしてバグを見つけるためのReactの機能とのこと。だから、ログが2回出力されていたということなんですね。スッキリ。

StrictModeを無効化する方法

原因が分かったらログが2回出力されていても問題は無いように感じますが、毎度2回出力されるのは鬱陶しいという方は以下のコードを参考にStrictModeの箇所を削除するかコメントアウトすると無効化できます。

import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import { App } from './App.tsx'

const container = document.getElementById('root');
const root = createRoot(container!);

root.render(
  <StrictMode> // ←削除orコメントアウト
    <App />
  </StrictMode> // ←削除orコメントアウト
);

ただ、Reactの思想的にStrictModeは無効化しないほうが良さそう

ただ、Reactではコンポーネントを純粋に保つことを推奨しており、使用している関数が純関数かどうかチェックするためのStrictModeであるわけですから、これを無効化するのはよくありません。

学習の段階ではStrictModeを無効化しても問題なさそうですが、実際の開発の際にはStrictModeを有効化にして、Reactの思想に沿って開発を進めて行くのが無難ですね。

スポンサーリンク

あとがき

今日はReactの学習を始めた私がStrictModeが原因でログが2回出力されて焦ったという話をしました。

最初は無効化することしか考えていませんでしたが、調べていくとReactの思想や純関数についての理解が深まったので良かったです。

というわけで、次回もよしなに!