import { useEffect, useState } from 'react'; import { Button, Spin } from 'antd'; import type { DouyuTaskItem } from '../api/types'; import { getExchangeImage } from '../utils/exchangeImage'; interface Props { task: DouyuTaskItem; onClick?: (task: DouyuTaskItem, url: string) => void; } export default function ExchangeResultImage({ task, onClick }: Props) { const [url, setUrl] = useState(''); const [failed, setFailed] = useState(false); const [gen, setGen] = useState(0); useEffect(() => { let alive = true; setFailed(false); getExchangeImage(task) .then(({ url }) => { if (alive) setUrl(url); }) .catch(() => { if (alive) setFailed(true); }); return () => { alive = false; }; }, [task, gen]); if (failed) { return ( ); } if (!url) return ; return (
onClick?.(task, url)} style={{ cursor: 'pointer', display: 'inline-block', lineHeight: 0 }} title="点击查看大图并复制" > 兑换结果
); }