fix: 客户端资源清理 — ShareCard 依赖 + 定时器 + 死代码
- #20: ShareCardModal useEffect 依赖改为 imageSrc 字符串,避免对象引用变化重复加载 - #21: BlindboxRoomPage 所有 setTimeout/rAF 统一收集,unmount 时清理 - #25: 删除未使用的 confettiCanvasRef 和 canvas 元素
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user