import React, { useEffect } from 'react'; import { useProjectStore } from '../store/projectStore'; import { useUIStore } from '../store/uiStore'; import { ProjectCard } from './ProjectCard'; import { EmptyState } from './EmptyState'; import { LoadingSpinner } from './LoadingSpinner'; import { ErrorMessage } from './ErrorMessage'; import { Plus } from 'lucide-react'; /** * 项目列表组件 * 遵循 Tauri 开发规范的组件设计模式 */ export const ProjectList: React.FC = () => { const { projects, isLoading, error, loadProjects, deleteProject, setCurrentProject, clearError } = useProjectStore(); const { openCreateProjectModal, openEditProjectModal } = useUIStore(); // 组件挂载时加载项目 useEffect(() => { loadProjects(); }, [loadProjects]); // 处理项目打开 const handleProjectOpen = (project: any) => { setCurrentProject(project); // TODO: 导航到项目详情页面 console.log('打开项目:', project); }; // 处理项目编辑 const handleProjectEdit = (project: any) => { openEditProjectModal(project); }; // 处理项目删除 const handleProjectDelete = async (id: string) => { if (window.confirm('确定要删除这个项目吗?此操作不可撤销。')) { try { await deleteProject(id); } catch (error) { console.error('删除项目失败:', error); } } }; // 错误状态 if (error) { return (

我的项目

); } // 加载状态 if (isLoading && projects.length === 0) { return (

我的项目

); } return (

我的项目

{projects.length === 0 ? ( ) : (
{projects.map((project) => ( ))}
)} {isLoading && projects.length > 0 && (
)}
); };