diff --git a/web/usercenter/components/UserCenter.tsx b/web/usercenter/components/UserCenter.tsx index ad89fe3..ba59124 100644 --- a/web/usercenter/components/UserCenter.tsx +++ b/web/usercenter/components/UserCenter.tsx @@ -124,17 +124,19 @@ export default function UserCenter() { setView('overview'); } - // 已登录(本地有 refresh token)但会话续期尚未完成:显示加载态而非登录页, - // 避免"先闪登录页再跳面板"(从官网带登录态进来时的 bug)。续期成功→面板、失败→登录页。 - if (!ready && hasRefresh()) { + // 引导(会话续期)未完成前一律显示加载态,不渲染登录页。关键:静态导出下 SSR 首屏 + // 读不到 localStorage(hasRefresh 服务端恒 false),若此时渲染登录页 → 刷新 /user/ 会 + // "先闪登录页再水合跳回面板"。且在 render 期调 hasRefresh() 会造成 SSR/客户端不一致。 + // 故引导期(!ready)只显示加载态(不读 localStorage),引导完再定:已登录→面板、 + // 未登录/续期失败→登录页。 + if (!ready) { return (