正解は依存配列の設定ミスです。useEffect内で状態を更新し、その状態が依存配列に含まれていると、更新→再実行→更新の無限ループが発生します。依存配列を適切に設定するか、更新条件を追加することで防げます。