修复定时器与动画回调清理不完整问题

This commit is contained in:
2026-03-03 12:27:34 +08:00
parent 45dbac1935
commit 4cd593bc30
5 changed files with 57 additions and 12 deletions
+8 -3
View File
@@ -167,10 +167,15 @@
- 先清理 error 级规则,再统一处理 warning;
- 针对 hooks 规则建立最小回归测试。
### P2-5 定时器清理不完整(潜在内存泄漏/卸载后状态写入)
### P2-5 定时器清理不完整(潜在内存泄漏/卸载后状态写入)【已完成】
- 修复状态:✅ 已完成(2026-03-03
- 修复内容:
- `useBlindboxIdeas` 增加统一 `useEffect` cleanup,卸载时清理所有 `timersRef`
- `useBlindboxDraw` 增加 confetti 停止逻辑(timeout + `requestAnimationFrame` + `confetti.reset`),并在 `handleContinue` 与 unmount 时清理;
- 同步修正盲盒房间页与 `useBlindboxRoom` 的定时器 cleanup 方式,避免 ref 清理时机不稳定。
- 证据:
- `src/hooks/useBlindboxIdeas.ts:52` + `:129`(保存定时器,但无统一 cleanup)
- `src/hooks/useBlindboxDraw.ts:25` + `:38`(定时器与动画回调未见 unmount 清理)
- `src/hooks/useBlindboxIdeas.ts` 已新增 `timersRef` 统一清理;
- `src/hooks/useBlindboxDraw.ts` 已新增 confetti 与动画回调销毁逻辑。
- 影响:
- 页面切换或快速操作下可能出现卸载后 setState、额外渲染噪音。
- 建议: