"use client"; import { useEffect, useMemo, useState } from "react"; type Tab = "link" | "qr"; export function SharePanel({ url }: { url: string }) { const [open, setOpen] = useState(false); const [tab, setTab] = useState("link"); const [copied, setCopied] = useState(false); const safeUrl = useMemo(() => url.trim(), [url]); useEffect(() => { if (!open) { setCopied(false); setTab("link"); } }, [open]); async function handleCopy() { if (!safeUrl) return; try { await navigator.clipboard.writeText(safeUrl); setCopied(true); setTimeout(() => setCopied(false), 1500); } catch { setCopied(false); alert("复制失败,请手动复制链接"); } } return (
{open ? (
{tab === "link" ? (
) : (
QR

扫码查看本篇内容

)}
) : null}
); }