fix: 客户端资源清理 — ShareCard 依赖 + 定时器 + 死代码

- #20: ShareCardModal useEffect 依赖改为 imageSrc 字符串,避免对象引用变化重复加载
- #21: BlindboxRoomPage 所有 setTimeout/rAF 统一收集,unmount 时清理
- #25: 删除未使用的 confettiCanvasRef 和 canvas 元素
This commit is contained in:
2026-02-26 20:21:59 +08:00
parent cf88d3a1d2
commit 5adfe8d3f1
2 changed files with 21 additions and 13 deletions
+5 -6
View File
@@ -38,21 +38,20 @@ export default function ShareCardModal({
const [imageDataUrl, setImageDataUrl] = useState<string | null>(null);
const [imageLoading, setImageLoading] = useState(false);
const imageSrc = data.type === "restaurant" ? data.restaurant.images?.[0] : undefined;
useEffect(() => {
if (!open) {
setImageDataUrl(null);
return;
}
if (data.type !== "restaurant") return;
const src = data.restaurant.images?.[0];
if (!src) return;
if (!imageSrc) return;
setImageLoading(true);
loadImageAsDataUrl(src)
loadImageAsDataUrl(imageSrc)
.then(setImageDataUrl)
.finally(() => setImageLoading(false));
}, [open, data]);
}, [open, imageSrc]);
const handleGenerate = useCallback(async (): Promise<string | null> => {
if (!cardRef.current) return null;