Closed4
[React] ChromeのDevToolsのConsoleに薄いログが出力される件
ペアプロ時にChromeのDevToolsのConsoleに薄いログが出力され、「お?」となったので調査。
ChromeのDevToolsのConsoleに、通常のログに加えて薄いログも出力されている様子
なお「どうやらReact DevToolsが原因らしい」、というところまでペアプロの際に動作確認ベースで判明していた。
しかしながらその時の主眼は別にあったのでなぜこの現象が発生していたのかまでは追えていなかった。
原因
React の strictモードが原因だった。
stricモードが有効になっていると関数コンポーネント等が2回呼び出され、それに伴い仕込んだログも2回出力されるのだが、React DevToolsを利用しているとその2回目のログが薄く表示されるとのこと。
この挙動はReact 18から。もともと17系で開発をしていたプロジェクトだったのだが、最近18にあがったことにより挙動が変わり冒頭のペアプロ時の「お?」に繋がったものと考えられる。
React 17 の挙動
React 17 の時点でも関数コンポーネントが2回呼び出されてはいた(strictモード 且つ 開発モード のとき)のだが、React側で console.log()
のようなコンソールメソッドを自動的に書き換えていたため、ログが複数回出力されることはなかった。
ちなみに useEffect()
が想定より多く呼ばれるという観点でも調査をした際の原因もReactのstrictモードだった。
このスクラップは2022/11/07にクローズされました