import React from 'react'; import { useNavigate } from 'react-router-dom'; import { ChevronLeft, ArrowLeft } from 'lucide-react'; interface BackButtonProps { /** 返回按钮的样式变体 */ variant?: 'icon' | 'button' | 'text'; /** 自定义返回逻辑,如果不提供则使用navigate(-1) */ onBack?: () => void; /** 按钮文本,仅在button和text变体时使用 */ text?: string; /** 自定义CSS类名 */ className?: string; /** 图标大小 */ iconSize?: number; /** 是否显示图标 */ showIcon?: boolean; /** 自定义图标 */ icon?: React.ReactNode; } /** * 通用返回上一页按钮组件 * 使用React Router的navigate方法实现返回功能 */ export const BackButton: React.FC = ({ variant = 'icon', onBack, text = '返回', className = '', iconSize = 6, showIcon = true, icon }) => { const navigate = useNavigate(); const handleBack = () => { if (onBack) { onBack(); } else { navigate(-1); } }; const defaultIcon = variant === 'icon' ? ( ) : ( ); const buttonIcon = icon || (showIcon ? defaultIcon : null); switch (variant) { case 'icon': return ( ); case 'button': return ( ); case 'text': return ( ); default: return null; } }; export default BackButton;