"use client"; import { useEffect, useState } from "react"; import Link from "next/link"; import { getApiUrl } from "../utils/getApiUrl"; // đŸ”„ Import de l'URL dynamique 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 (
{/* Titre de la page */}

Mes Compétences

{/* Affichage d'un message si aucune compétence n'est trouvée */} {competences.length === 0 ? (

Aucune compétence disponible.

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

{competence.name}

{competence.description}

); })}
)}
); }