From 4a1ce220a60c7a39b62fb175c2d784dc1c8f5775 Mon Sep 17 00:00:00 2001 From: selfrelease Date: Thu, 25 Jun 2026 21:07:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=A1=B5=E5=AE=A2=E6=88=B7=E7=AB=AF=E5=85=9C=E5=BA=95=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E9=81=BF=E5=85=8D=E6=B0=B4=E5=90=88=E6=97=B6?= =?UTF-8?q?=E5=BA=8F=E5=AF=BC=E8=87=B4=E7=9A=84=20Failed=20to=20fetch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除 useEffect 中的客户端 fetch 兜底,完全依赖 SSR 注入机构数据。 避免水合时 initialOrgs 为空触发客户端请求,导致移动端出现 Failed to fetch 错误。 --- apps/web/src/app/(auth)/login/login-form.tsx | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/apps/web/src/app/(auth)/login/login-form.tsx b/apps/web/src/app/(auth)/login/login-form.tsx index 55c7810..dd6ee36 100644 --- a/apps/web/src/app/(auth)/login/login-form.tsx +++ b/apps/web/src/app/(auth)/login/login-form.tsx @@ -29,18 +29,8 @@ export default function LoginForm({ initialOrgs }: { initialOrgs: Organization[] const { login, switchOrg } = useAuthStore(); const router = useRouter(); - // SSR 已注入机构时直接使用,无需再请求; - // 仅当服务端取数失败(首屏机构为空)时,客户端兜底拉取一次 - useEffect(() => { - if (initialOrgs.length > 0) return; - api - .get("/api/v1/organizations") - .then((data) => { - setOrgs(data); - if (data.length > 0) setSelectedOrg(data[0].id); - }) - .catch(() => {}); - }, [initialOrgs.length]); + // SSR 完全处理机构数据,移除客户端兜底逻辑避免水合时序问题和移动端 fetch 失败 + // 如果 SSR 失败(initialOrgs 为空),直接显示空状态或禁用表单 const handleSubmit = async (e: React.FormEvent) => { e.preventDefault();