"use client"; import { useState, useEffect } from "react"; import { useRouter } from "next/navigation"; import Link from "next/link"; import { UserPlus } from "lucide-react"; import { apiRegister, apiMe } from "@/lib/api"; import { hasAuthCookieHint } from "@/lib/cookies"; export default function RegisterPage() { const router = useRouter(); const [username, setUsername] = useState(""); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); // 已登录用户不必再注册,直接回首页 useEffect(() => { if (!hasAuthCookieHint()) return; apiMe() .then((res) => { if (res.user) router.replace("/"); }) .catch(() => {}); }, [router]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setError(""); setLoading(true); try { const res = await apiRegister(username, email, password); if (res.user) { // 后端注册即签发登录态 cookie:直接进入社区,无需再手动登录 router.push("/"); router.refresh(); } else if (res.id) { // 极端情况:注册成功但自动签发失败,引导去登录 router.push("/login"); } else { setError(res.error || "注册失败"); } } finally { setLoading(false); } }; return (

创建账号

加入姜十三,开始你的第一帖

{error &&
{error}
}
setUsername(e.target.value)} required minLength={3} maxLength={32} autoFocus autoComplete="username" className="field" placeholder="3–32 位" />
setEmail(e.target.value)} autoComplete="email" className="field" placeholder="you@example.com" />
setPassword(e.target.value)} required minLength={6} autoComplete="new-password" className="field" placeholder="至少 6 位" />

已有账号? 去登录

); }