"use client"; import { useEffect, useState } from "react"; import Link from "next/link"; import { getApiUrl } from "../utils/getApiUrl"; // đŸ”„ Import de l'URL dynamique import CarouselCompetences from "../components/CarouselCompetences"; // đŸ”„ Import du composant CarouselCompetences export default function Page() { const [competences, setCompetences] = useState([]); // đŸ”„ Stocker les compĂ©tences une seule fois const apiUrl = getApiUrl(); // đŸ”„ DĂ©finition de l'URL API useEffect(() => { async function fetchCompetences() { console.log("🔍 API utilisĂ©e pour les compĂ©tences :", apiUrl); try { const response = await fetch(`${apiUrl}/api/competences?populate=*`); if (!response.ok) { throw new Error(`Erreur de rĂ©cupĂ©ration des compĂ©tences : ${response.statusText}`); } const data = await response.json(); setCompetences(data.data ?? []); } catch (error) { console.error("❌ Erreur lors de la rĂ©cupĂ©ration des compĂ©tences :", error); } } fetchCompetences(); // đŸ”„ ExĂ©cuter une seule fois au montage du composant }, [apiUrl]); // ✅ ExĂ©cuter `useEffect()` uniquement si `apiUrl` change return (
{/* Affichage d'un message si aucune compétence n'est trouvée */} {competences.length === 0 ? (

Aucune compétence disponible.

) : (
{competences.map((competence) => { const pictures = competence.picture || []; const images = pictures.map(picture => ({ url: picture.url ? `${apiUrl}${picture.url}` : "/placeholder.jpg", alt: picture.name || "Competence image" })); return (
{/* Lien vers la page de détail de la compétence */}

{competence.name}

{competence.description}

); })}
)}
); }