import { useState, useCallback } from 'react'; import { useNavigate } from 'react-router-dom'; import { useAuth } from '@/hooks/useAuth'; export interface LoginState { username: string; password: string; loading: boolean; error: string; setUsername: (v: string) => void; setPassword: (v: string) => void; handleLogin: (e: React.FormEvent) => Promise; } export function useLogin(): LoginState { const navigate = useNavigate(); const { login } = useAuth(); const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(''); const handleLogin = useCallback(async (e: React.FormEvent) => { e.preventDefault(); if (!username || !password) return; setLoading(true); setError(''); const ok = await login(username, password); setLoading(false); if (ok) { navigate('/dashboard'); } else { setError('用户名或密码错误'); } }, [username, password, login, navigate]); return { username, password, loading, error, setUsername, setPassword, handleLogin }; }