"use client"; import { useState, Suspense } from "react"; import { useRouter, useSearchParams } from "next/navigation"; function LoginForm() { const router = useRouter(); const params = useSearchParams(); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(""); try { const form = new URLSearchParams(); form.append("username", email); form.append("password", password); const r = await fetch("/api/auth/login", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: form.toString(), }); const data = await r.json(); if (!r.ok) { setError(data.detail || "登录失败"); return; } localStorage.setItem("arb_token", data.access_token); router.push("/dashboard"); } catch { setError("网络错误,请重试"); } finally { setLoading(false); } }; return (

登录

{params.get("registered") && (

✅ 注册成功,请登录

)}

登录后查看信号和账户信息

setEmail(e.target.value)} className="w-full bg-slate-900 border border-slate-600 rounded-lg px-3 py-2 text-slate-100 text-sm focus:outline-none focus:border-cyan-500" placeholder="your@email.com" />
setPassword(e.target.value)} className="w-full bg-slate-900 border border-slate-600 rounded-lg px-3 py-2 text-slate-100 text-sm focus:outline-none focus:border-cyan-500" />
{error &&

{error}

}

没有账号?注册

); } export default function LoginPage() { return ( ); }