✍️
Reactのコンポーネントがなんか2回呼ばれているなと思ったら。
結論
strictモードの時には、setStateのアップデーターが2回呼ばれるらしい。
ChromeのDevtoolで確認すると、StrictModeの時はconsole.logさせると実ファイルのログと、VMのログが出るけど、StrictModeやめると、実ファイルのログだけでた。
けど、next devのログの方には依然として2回ログが出る。
意図としては、変な依存がないか確かめるためやでーとのことだが、発火要因がいまいちわからん。useState使用してなくて純粋にjsxだけ返すような下記ページで試しても2回ログでる。
sample.tsx
function Sample() {
console.log("initialize");
return <div>sample</div>;
}
export default Sample;
開発モードの時だけ2回実行されるだけで本番には一切影響しないんやで、これも安全に開発してほしい運営からの圧倒的配慮ッッッ!!!てことなのかなと思いました。
Nextjsで試したい時は
next.jsの場合にはこちらでStrictModeかどうか設定しているので適宜切り替えて、試してみることができる。
Discussion