This commit is contained in:
Ladebeze66 2025-02-03 17:58:36 +00:00
parent 3d910fe1fe
commit 8bf66f695d
4 changed files with 63 additions and 14 deletions

2
.gitignore vendored
View File

@ -39,3 +39,5 @@ yarn-error.log*
# typescript # typescript
*.tsbuildinfo *.tsbuildinfo
next-env.d.ts next-env.d.ts
.vercel

View File

@ -1,5 +1,10 @@
import ContentSectionCompetencesContainer from "../../components/ContentSectionCompetencesContainer"; import ContentSectionCompetencesContainer from "../../components/ContentSectionCompetencesContainer";
export default function CompetencePage({ params }: { params: { slug: string } }) { export default function CompetencePage({ params }: { params: { slug: string } }) {
return <ContentSectionCompetencesContainer collection="competences" slug={params.slug} />; // Vérifie que le paramètre `slug` est bien défini
} if (!params?.slug) {
return <div>Erreur : Slug introuvable.</div>;
}
return <ContentSectionCompetencesContainer collection="competences" slug={params.slug} />;
}

View File

@ -1,7 +1,51 @@
import ContentSection from "../../components/ContentSection"; // Importation du composant ContentSection "use client";
// Composant principal de la page de détail du projet import { useParams } from "next/navigation";
export default function Page({ params }: { params: { slug: string } }) { import ContentSection from "../../components/ContentSection";
// Rendu du composant ContentSection avec les paramètres de la collection et du slug import { useEffect, useState } from "react";
return <ContentSection collection="projects" slug={params.slug} />;
} export default function Page() {
const params = useParams();
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState<string | null>(null); // ✅ Ajout du typage string | null
const slug = typeof params.slug === "string" ? params.slug : "";
useEffect(() => {
if (!params?.slug) return;
async function fetchData() {
try {
const response = await fetch(`http://localhost:1337/api/projects?filters[slug][$eq]=${params.slug}&populate=*`);
const jsonData = await response.json();
if (!jsonData?.data || jsonData.data.length === 0) {
setError("❌ Erreur : Projet introuvable.");
} else {
setData(jsonData.data);
}
} catch (err) {
setError("❌ Erreur de chargement des données.");
} finally {
setLoading(false);
}
}
fetchData();
}, [params.slug]);
if (!params?.slug) {
return <div className="text-red-500 text-center"> Erreur : Slug introuvable.</div>;
}
if (loading) {
return <div className="text-blue-500 text-center"> Chargement...</div>;
}
if (error) {
return <div className="text-red-500 text-center">{error}</div>;
}
return params.slug ? <ContentSection collection="projects" slug={slug} /> : <div className="text-red-500 text-center"> Erreur : Slug introuvable.</div>;
}

View File

@ -2,10 +2,8 @@
const nextConfig = { const nextConfig = {
// Active le mode strict de React pour signaler des erreurs potentielles // Active le mode strict de React pour signaler des erreurs potentielles
reactStrictMode: true, reactStrictMode: true,
// Activer les fonctionnalités expérimentales nécessaires (par exemple appDir pour les layouts de l'application)
experimental: { experimental: {
appDir: true, appDir: true, // ✅ Assurez-vous que cette ligne est bien présente
}, },
// Gestion des réécritures d'URL pour proxy local vers le backend // Gestion des réécritures d'URL pour proxy local vers le backend