import React, { useEffect, useState } from 'react'; import { Link } from 'react-router-dom'; import { get as getUsers, post as createUser } from '@/lib/api'; import type { User, ApiResponse } from '@/types/api'; const UsersPage: React.FC = () => { const [users, setUsers] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [name, setName] = useState(''); const [email, setEmail] = useState(''); const [isCreating, setIsCreating] = useState(false); // 加载用户列表 useEffect(() => { loadUsers(); }, []); const loadUsers = async () => { try { setLoading(true); setError(null); const response = await getUsers>('/users'); setUsers(response.data); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to load users'); } finally { setLoading(false); } }; const handleCreateUser = async (e: React.FormEvent) => { e.preventDefault(); if (!name.trim() || !email.trim()) { setError('Please fill in all fields'); return; } try { setIsCreating(true); setError(null); const response = await createUser>('/users', { name, email }); setUsers([...users, response.data]); setName(''); setEmail(''); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to create user'); } finally { setIsCreating(false); } }; return (
← Back to Home

👥 Users

{error && (
{error}
)}
setName(e.target.value)} disabled={isCreating} className="px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500 focus:border-transparent disabled:bg-gray-100" /> setEmail(e.target.value)} disabled={isCreating} className="px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-green-500 focus:border-transparent disabled:bg-gray-100" />
{loading ? (

Loading users...

) : users.length === 0 ? (

No users found. Create one to get started!

) : (
{users.map((user) => (

{user.name}

{user.email}

ID: {user.id}
))}
)}
); }; export default UsersPage;