App.jsx 1.97 KB
import React, { useState, useEffect } from 'react';
import UserList from './components/UserList.jsx';
import UserForm from './components/UserForm.jsx';
import Header from './components/Header.jsx';
import HealthStatus from './components/HealthStatus.jsx';
import ApiService from './services/api.js';

function App() {
  const [users, setUsers] = useState([]);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState('');
  const [activeTab, setActiveTab] = useState('users');

  useEffect(() => {
    loadUsers();
  }, []);

  const loadUsers = async () => {
    try {
      setLoading(true);
      setError('');
      const data = await ApiService.getUsers();
      setUsers(data);
    } catch (err) {
      setError('获取用户列表失败,请检查后端服务是否正常运行');
      console.error('加载用户错误:', err);
    } finally {
      setLoading(false);
    }
  };

  const handleUserCreated = () => {
    loadUsers();
  };

  return (
    <div className="app">
      <Header />
      
      <div className="container">
        <nav className="tabs">
          <button 
            className={activeTab === 'users' ? 'active' : ''} 
            onClick={() => setActiveTab('users')}
          >
            用户管理
          </button>
          <button 
            className={activeTab === 'health' ? 'active' : ''} 
            onClick={() => setActiveTab('health')}
          >
            系统状态
          </button>
        </nav>

        {activeTab === 'users' && (
          <div className="tab-content">
            <UserForm onUserCreated={handleUserCreated} />
            <UserList 
              users={users} 
              loading={loading} 
              error={error}
              onUsersUpdated={loadUsers}
            />
          </div>
        )}

        {activeTab === 'health' && (
          <div className="tab-content">
            <HealthStatus />
          </div>
        )}
      </div>
    </div>
  );
}

export default App;