2025-02-21 16:10:14 +08:00
|
|
|
|
/**
|
|
|
|
|
* 错误处理模块 - 全局路由级错误展示组件
|
|
|
|
|
* 功能: 捕获React Router路由层级错误并展示可视化错误信息
|
|
|
|
|
* 特性:
|
|
|
|
|
* - 自动解析路由错误对象
|
|
|
|
|
* - 自适应错误信息展示
|
|
|
|
|
* - 响应式布局设计
|
|
|
|
|
*/
|
2024-12-30 08:26:40 +08:00
|
|
|
|
import { useRouteError } from "react-router-dom";
|
|
|
|
|
|
2025-02-21 16:10:14 +08:00
|
|
|
|
/**
|
|
|
|
|
* 错误展示页面组件
|
|
|
|
|
* @核心功能 呈现标准化错误界面,用于处理应用程序的路由层级错误
|
|
|
|
|
* @设计模式 采用展示型组件模式,完全解耦业务逻辑实现纯UI展示
|
|
|
|
|
* @使用示例 在React Router的RouterProvider中配置errorElement={<ErrorPage/>}
|
|
|
|
|
*/
|
2024-07-11 11:00:51 +08:00
|
|
|
|
export default function ErrorPage() {
|
2025-02-21 16:10:14 +08:00
|
|
|
|
// 使用React Router提供的Hook获取路由错误对象
|
|
|
|
|
// 类型定义为any以兼容React Router不同版本的类型差异
|
2024-12-30 08:26:40 +08:00
|
|
|
|
const error: any = useRouteError();
|
2025-02-21 16:10:14 +08:00
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
// 主容器: 基于Flex的垂直水平双居中布局
|
|
|
|
|
// pt-64: 顶部留白实现视觉层次结构
|
|
|
|
|
<div className="flex justify-center items-center pt-64">
|
|
|
|
|
{/* 内容区块: 采用纵向弹性布局控制内部元素间距 */}
|
|
|
|
|
<div className="flex flex-col gap-4">
|
|
|
|
|
{/* 主标题: 强调性文字样式配置 */}
|
|
|
|
|
<div className="text-xl font-bold text-primary">
|
|
|
|
|
哦?页面似乎出错了...
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{/* 错误详情: 动态渲染错误信息,实现优雅降级策略 */}
|
|
|
|
|
{/* 使用可选链操作符防止未定义错误,信息优先级: statusText > message */}
|
|
|
|
|
<div className="text-tertiary">
|
|
|
|
|
{error?.statusText || error?.message}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2024-12-30 08:26:40 +08:00
|
|
|
|
</div>
|
2025-02-21 16:10:14 +08:00
|
|
|
|
)
|
2024-07-11 11:00:51 +08:00
|
|
|
|
}
|