diff --git a/app/components/auth/Login.tsx b/app/components/auth/Login.tsx index 6103ba1..bd0d3b1 100644 --- a/app/components/auth/Login.tsx +++ b/app/components/auth/Login.tsx @@ -1,33 +1,40 @@ import React, { useState } from 'react'; -import { useNavigate } from '@remix-run/react'; +import { useAuth } from '~/hooks/useAuth'; +import type { LoginResponse } from '~/routes/api.auth.login'; export function Login() { const [phone, setPhone] = useState(''); const [password, setPassword] = useState(''); - const navigate = useNavigate(); + const [error, setError] = useState(null); + const { login } = useAuth(); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); + setError(null); + try { const response = await fetch('/api/auth/login', { method: 'POST', - headers: { 'Content-Type': 'application/json' }, + headers: { + 'Content-Type': 'application/json', + }, body: JSON.stringify({ phone, password }), }); - if (response.ok) { - const data = (await response.json()) as { token: string }; - localStorage.setItem('token', data.token); - navigate('/dashboard'); + const data = (await response.json()) as LoginResponse; + if (response.ok && data.token && data.user) { + login(data.token, data.user); + // 登录成功后的处理,例如重定向或显示成功消息 } else { - // 处理错误 + setError(data.error || '登录失败,请检查您的手机号和密码'); } } catch (error) { console.error('Login failed:', error); + setError('登录失败,请稍后再试'); } }; return ( -
+
+ {error &&
{error}
}