開発環境では問題が無く、ビルド時にエラーも出ないが、デプロイ(本環境)でのデータフェッチが失敗する

#ヘッドレスCMS#deploy#WordPress#Xserver#Next.js
はじめに
Bash
この警告、正直最初は「なんで出てるの?」って感じでしたが、今回はeslintのルールを変えず、コメントでエラーを無視せず、根本的に解決する方法をシェアします。
なにが起こったか?
ある日、以下のようなコードを書いていました。
TSX
すると、VS Codeで以下のようなeslintの警告が出ました。
Bash
えっ、setCount
って関数だし、ステートのセッターなんだから依存配列に入れなくてよくない?と混乱。
よくある「解決策」(でも根本解決じゃない)
調べて出てきたよくある解決策は以下の通り:
- eslintのルールを緩くする
// eslint-disable-next-line react-hooks/exhaustive-deps
を使って警告を無視
でもこれはあくまで**"警告を消すだけ"の対応**で、根本的な理解にはつながりません。
実際にハマったポイント
依存配列にsetCount
を入れると、以下のように無限ループが発生する場合もあります。
TSX
解決方法:ifで条件を制御する
重要なのは「副作用を必要なときだけ実行する」こと。依存配列には必要な値を入れつつ、実行条件をコードで制御するのが正解です。
TSX
このように、依存配列は適切に保ちつつ、副作用の実行タイミングはif
文などでしっかりガードすることが大事です。
まとめ
useEffect
の警告は無視せずに理解することが大切- 依存配列を適切に保ったまま、副作用の実行を条件で制御する
eslint-disable
などは最終手段
Reactに慣れてきた頃こそ、こういう落とし穴にハマりがちなので、ぜひ参考になれば嬉しいです!
コメント (0)
コメントを投稿
メール認証について
スパム防止のため、コメント投稿にはメールアドレスの認証が必要です。認証コードがメールで送信されます。
コメントを読み込み中...