修复发帖长文布局与手机下拉刷新,发版后自动重载失效 chunk,并整理站务文案。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-03 18:18:35 +08:00
parent 61b47363e9
commit 2c06eaccb2
20 changed files with 811 additions and 360 deletions

View File

@@ -0,0 +1,60 @@
import { useEffect } from 'react';
import { isRouteErrorResponse, useRouteError } from 'react-router-dom';
import { Button } from '@/components/ui/button';
import { isChunkLoadError, reloadForStaleChunk } from '../utils/chunkLoad';
function errorMessage(error: unknown): string {
if (isRouteErrorResponse(error)) {
if (typeof error.data === 'string' && error.data) return error.data;
if (error.data && typeof error.data === 'object' && 'message' in error.data) {
const m = (error.data as { message?: unknown }).message;
if (typeof m === 'string' && m) return m;
}
return error.statusText || `错误 ${error.status}`;
}
if (error instanceof Error) return error.message;
return String(error ?? '未知错误');
}
/**
* React Router 路由级错误页。
* 发版后动态模块 404 时自动刷新;其它错误给出手动刷新入口。
*/
export default function AppRouteError() {
const error = useRouteError();
const chunkMiss = isChunkLoadError(error);
useEffect(() => {
if (chunkMiss) reloadForStaleChunk();
}, [chunkMiss]);
if (chunkMiss) {
return (
<div className="error-page-shell">
<div className="error-page">
<div className="error-page__code" aria-hidden></div>
<h1 className="error-page__title"></h1>
<p className="error-page__desc"></p>
</div>
</div>
);
}
return (
<div className="error-page-shell">
<div className="error-page">
<div className="error-page__code" aria-hidden>500</div>
<h1 className="error-page__title"></h1>
<p className="error-page__desc">{errorMessage(error)}</p>
<div className="error-page__actions">
<Button size="sm" onClick={() => window.location.reload()}>
</Button>
<Button size="sm" variant="outline" onClick={() => { window.location.href = '/'; }}>
</Button>
</div>
</div>
</div>
);
}