# 秒杀商品详情页面特效修复说明

## 问题描述
用户反馈：离开页面后，漂落物特效会一直叠加，没有正确停止。

## 问题原因
1. **页面生命周期管理缺失**：当用户离开页面时，特效的定时器和动画没有被正确清理
2. **定时器没有被清理**：特效执行的定时器在页面隐藏时没有被清除
3. **特效组件状态没有重置**：特效组件的状态在页面重新进入时没有被正确重置

## 修复方案

### 1. 添加页面生命周期管理
- 引入 `onHide`、`onShow`、`onUnmounted` 生命周期钩子
- 在页面隐藏时停止所有特效
- 在页面显示时重置页面可见状态

### 2. 特效定时器管理
- 添加 `effectTimers` 数组来跟踪所有特效定时器
- 添加 `clearAllEffectTimers()` 函数来清理所有定时器
- 在创建定时器时将其ID存储到数组中

### 3. 页面可见性检查
- 添加 `isPageVisible` 状态来跟踪页面是否可见
- 在执行特效前检查页面是否可见，如果不可见则跳过执行

### 4. 特效组件增强
- 在 `firework-effect.vue` 中添加 `stopAllEffects()` 方法
- 在 `red-packet-rain.vue` 中添加 `onUnmounted` 生命周期处理
- 确保所有特效组件都能正确响应停止命令

## 修复后的行为
1. **页面隐藏时**：自动停止所有特效，清理定时器
2. **页面显示时**：重置页面可见状态，允许新的特效执行
3. **组件卸载时**：清理所有资源，防止内存泄漏
4. **特效执行前**：检查页面是否可见，避免在后台执行特效

## 测试建议
1. 进入秒杀商品详情页面，观察特效正常播放
2. 切换到其他页面或应用，再返回，确认特效不会叠加
3. 多次进出页面，确认没有内存泄漏
4. 在不同的特效类型下测试（烟花、红包雨等）

## 相关文件
- `uni-app/src/addon/seckill/components/diy/seckill-goods-detail-basic-info/index.vue`
- `uni-app/src/components/firework-effect/firework-effect.vue`
- `uni-app/src/components/firework-effect/red-packet-rain.vue`
- `uni-app/src/components/firework-effect/simple-firework.vue`
