// Image3DFlipper.tsx 'use client'; import { motion, AnimatePresence } from 'framer-motion'; import { useEffect, useState } from 'react'; type ImageBlurTransitionProps = { className?: string; src: string; alt?: string; width?: number | string; height?: number | string; enableAnimation?: boolean; }; export default function ImageBlurTransition({ src, alt = '', width = 480, height = 300, className, enableAnimation = true }: ImageBlurTransitionProps) { const [current, setCurrent] = useState(src); const [isFlipping, setIsFlipping] = useState(false); useEffect(() => { if (src !== current) { setIsFlipping(true); const timeout = setTimeout(() => { setCurrent(src); setIsFlipping(false); }, 150); // 时长 = exit 动画时长 return () => clearTimeout(timeout); } }, [src, current]); return (