Learn | Code | Build
"keyword">import React, { "keyword">useState, "keyword">useEffect } "keyword">from "react";
import axios from "axios";
// Project component with cool animationsconst ProjectShowcase = () => {
const [projects, setProjects] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {const fetchProjects = async () => {
try {setLoading(true);
const response = await axios.get("/api/projects");
setProjects(response.data);
} catch (error) {
console.error("Error fetching projects:", error);
} finally {setLoading(false);
}
};
fetchProjects();
}, []);
// Calculate project statisticsconst totalLikes = projects.reduce((sum, proj) => sum + proj.likes, 0);
const avgRating = (
projects.reduce((sum, proj) => sum + proj.rating, 0) / projects.length
).toFixed(1); return (className="project-showcase">
Featured Projects
{loading ? (className="loader">Loading amazing projects...
) : (
className="projects-grid">
{projects.map((project) => (key={project.id} project={project} />
))}
)}
);
};
export default ProjectShowcase;