MSWの初期化タイミング問題と解決方法
Next.js
React
MSW
MSW (Mock Service Worker)でハンドラーが動作しない原因の一つである、初期化タイミングの問題とその解決方法。
問題の内容
useEffect内でMSWを非同期初期化しているが、その完了を待たずにアプリがレンダリングされるため、初回のAPIリクエストがMSWを通らず実際のAPIサーバーに送信されてしまう。
問題のあるコード
解決方法
MSWの初期化完了を状態管理し、準備完了後にのみアプリをレンダリングする。
ポイント
- 非同期処理の完了を
useState
で管理 - 初期化中は
null
を返してレンダリングを遅延 - 環境変数でMSWの有効/無効を制御し、無効時は即座にレンダリング