概要
app/gallery/[id]/generating/page.tsx の useEffect 内で params.then() を使っているため、cleanup関数が useEffect に返されず、ページ離脱時にポーリング(setInterval)が停止しない。
再現箇所
app/gallery/[id]/generating/page.tsx:36-71
useEffect(() => {
params.then(({ id }) => {
// ...
pollInterval = setInterval(checkStatus, 2000);
return () => clearInterval(pollInterval); // ← useEffectのreturnとして登録されない
});
}, [params, router]);
影響
- メモリリーク: ページ離脱後もポーリングが継続
- 不要なDBクエリが発生し続ける
対策案
React.use() でparamsを同期的に解決する
- または
ref にintervalを保持し、useEffectの直接returnでクリーンアップする
優先度
Critical
概要
app/gallery/[id]/generating/page.tsxのuseEffect内でparams.then()を使っているため、cleanup関数がuseEffectに返されず、ページ離脱時にポーリング(setInterval)が停止しない。再現箇所
app/gallery/[id]/generating/page.tsx:36-71影響
対策案
React.use()でparamsを同期的に解決するrefにintervalを保持し、useEffectの直接returnでクリーンアップする優先度
Critical