import React, { useState } from 'react'; import { useNavigate } from 'react-router'; import { ArrowRightIcon, EnvelopeIcon, LockClosedIcon, UserIcon } from '@heroicons/react/24/outline'; import { AuthAPI } from './api.ts'; import { handleApiError } from './utils.ts'; const RegisterPage: React.FC = () => { const navigate = useNavigate(); const [username, setUsername] = useState(''); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const handleRegister = async (e: React.FormEvent) => { e.preventDefault(); // 表单验证 if (!username.trim()) { setError('用户名不能为空'); return; } if (!email.trim()) { setError('邮箱不能为空'); return; } if (!password.trim()) { setError('密码不能为空'); return; } if (password !== confirmPassword) { setError('两次输入的密码不一致'); return; } setLoading(true); setError(null); try { await AuthAPI.register(username, email, password); // 注册成功后跳转到登录页 navigate('/mobile/login'); } catch (err) { setError(handleApiError(err)); } finally { setLoading(false); } }; return (
{/* 顶部Logo和标题 */}

{window.CONFIG?.APP_NAME || '移动应用'}

创建您的账户

{/* 注册表单 */}
{error && (
{error}
)}
setUsername(e.target.value)} className="w-full pl-10 pr-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="请输入用户名" />
setEmail(e.target.value)} className="w-full pl-10 pr-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="请输入邮箱" />
setPassword(e.target.value)} className="w-full pl-10 pr-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="请输入密码" />
setConfirmPassword(e.target.value)} className="w-full pl-10 pr-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="请再次输入密码" />
{/* 底部文本 */}
© {new Date().getFullYear()} {window.CONFIG?.APP_NAME || '移动应用'}

保留所有权利

); }; export default RegisterPage;