import React, { useState, useEffect } from 'react'; import { AlertCircle, Loader2 } from 'lucide-react'; interface RouteLoadingProps { timeout?: number; // 超时时间(毫秒),默认10秒 } /** * 路由懒加载时的加载组件 * * 功能: * 1. 显示加载动画(使用 shadcn 风格) * 2. 超时检测 * 3. 提供重试机制 * 4. 优化用户体验 */ const RouteLoading: React.FC = ({ timeout = 10000 }) => { const [isTimeout, setIsTimeout] = useState(false); useEffect(() => { // 设置超时检测 const timer = setTimeout(() => { setIsTimeout(true); }, timeout); return () => clearTimeout(timer); }, [timeout]); const handleReload = () => { window.location.reload(); }; if (isTimeout) { return (

加载时间过长

页面加载超时,可能是网络问题。

); } return (
{/* ✅ 使用 shadcn 风格的 loading(lucide-react 图标) */}

正在加载页面

请稍候...

); }; export default RouteLoading;