"use client"; import { useEffect, useState, useCallback } from "react"; import { motion, AnimatePresence } from "framer-motion"; import { ThumbsDown, ThumbsUp } from "lucide-react"; const STORAGE_KEY = "nw_guide_v2"; interface SwipeGuideProps { onDismiss: () => void; } export default function SwipeGuide({ onDismiss }: SwipeGuideProps) { const [visible, setVisible] = useState(() => { if (typeof window === "undefined") return false; return !localStorage.getItem(STORAGE_KEY); }); const dismiss = useCallback(() => { setVisible(false); localStorage.setItem(STORAGE_KEY, "1"); onDismiss(); }, [onDismiss]); useEffect(() => { if (!visible) { onDismiss(); return; } const timer = setTimeout(dismiss, 3000); return () => clearTimeout(timer); }, []); // eslint-disable-line react-hooks/exhaustive-deps return ( {visible && (
不想去 ← 左滑
滑动卡片
想去 右滑 →
)}
); }