import { View, Text } from '@tarojs/components' import { useState, useEffect } from 'react' import Taro from '@tarojs/taro' import { useAuth } from '@/utils/auth' import { cn } from '@/utils/cn' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import Navbar from '@/components/ui/navbar' import './index.css' export default function Register() { const [username, setUsername] = useState('') const [email, setEmail] = useState('') const [password, setPassword] = useState('') const [confirmPassword, setConfirmPassword] = useState('') const [showPassword, setShowPassword] = useState(false) const [showConfirmPassword, setShowConfirmPassword] = useState(false) const { register, isLoading } = useAuth() useEffect(() => { Taro.setNavigationBarTitle({ title: '创建账号' }) }, []) const handleRegister = async () => { // 输入验证 if (!username.trim()) { Taro.showToast({ title: '请输入用户名', icon: 'none', duration: 2000 }) return } if (username.trim().length < 3) { Taro.showToast({ title: '用户名至少3个字符', icon: 'none', duration: 2000 }) return } if (!password.trim()) { Taro.showToast({ title: '请输入密码', icon: 'none', duration: 2000 }) return } if (password.trim().length < 6) { Taro.showToast({ title: '密码至少6个字符', icon: 'none', duration: 2000 }) return } if (password.trim() !== confirmPassword.trim()) { Taro.showToast({ title: '两次输入的密码不一致', icon: 'none', duration: 2000 }) return } if (email.trim() && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email.trim())) { Taro.showToast({ title: '请输入有效的邮箱地址', icon: 'none', duration: 2000 }) return } try { Taro.showLoading({ title: '注册中...', mask: true }) await register({ username: username.trim(), password: password.trim(), email: email.trim() || undefined }) Taro.hideLoading() Taro.showToast({ title: '注册成功', icon: 'success', duration: 1500 }) setTimeout(() => { Taro.switchTab({ url: '/pages/index/index' }) }, 1500) } catch (error: any) { Taro.hideLoading() const errorMessage = error.message || '注册失败,请重试' Taro.showToast({ title: errorMessage, icon: 'none', duration: 3000 }) } } const goToLogin = () => { Taro.navigateBack() } return ( {/* Logo区域 */} 创建账号 欢迎加入我们的小程序社区 {/* 注册表单 */} {/* 用户名输入框 */} 用户名 setUsername(e.detail.value)} maxlength={20} size="lg" variant="filled" /> {/* 邮箱输入框 */} 邮箱(可选) setEmail(e.detail.value)} maxlength={50} size="lg" variant="filled" /> {/* 密码输入框 */} 密码 setPassword(e.detail.value)} maxlength={20} size="lg" variant="filled" onRightIconClick={() => setShowPassword(!showPassword)} /> {/* 确认密码输入框 */} 确认密码 setConfirmPassword(e.detail.value)} maxlength={20} size="lg" variant="filled" onRightIconClick={() => setShowConfirmPassword(!showConfirmPassword)} /> {/* 注册按钮 */} {/* 登录链接 */} 已有账号? 立即登录 {/* 协议声明 */} 注册即表示您同意 用户协议隐私政策 ) }