add home page and projects page
This commit is contained in:
+7
-12
@@ -1,20 +1,15 @@
|
||||
import './App.css'
|
||||
import Home from './components/Home.jsx'
|
||||
import Experiences from './components/Experiences.jsx'
|
||||
import Projects from './components/Projects.jsx'
|
||||
import Skills from './components/Skills.jsx'
|
||||
import Footer from './components/Footer.jsx'
|
||||
import { Routes, Route, Link } from 'react-router-dom';
|
||||
import HomePage from './pages/HomePage.jsx';
|
||||
import ProjectsPage from './pages/ProjectsPage';
|
||||
|
||||
|
||||
function App() {
|
||||
return (
|
||||
<div className="App">
|
||||
<Home/>
|
||||
<Experiences />
|
||||
<Projects />
|
||||
<Skills />
|
||||
<Footer />
|
||||
</div>
|
||||
<Routes>
|
||||
<Route path="/" element={<HomePage />} />
|
||||
<Route path="/projets" element={<ProjectsPage />} />
|
||||
</Routes>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -10,14 +10,14 @@ function Experiences() {
|
||||
useEffect(() => {
|
||||
const fetchExperiencesAndTasks = async () => {
|
||||
try {
|
||||
let response = await fetch('/api/experiences');
|
||||
let response = await fetch('/api/experiences/');
|
||||
if (!response.ok) {
|
||||
throw new Error(`Erreur HTTP: ${response.status}`);
|
||||
}
|
||||
let data = await response.json();
|
||||
setExperiences(data.data);
|
||||
|
||||
response = await fetch('/api/experienceTasks');
|
||||
response = await fetch('/api/experienceTasks/');
|
||||
if (!response.ok) {
|
||||
throw new Error(`Erreur HTTP: ${response.status}`);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import SingleProject from "./SingleProject.jsx";
|
||||
import "../styles/Projects.css"
|
||||
import React, {useEffect, useState} from "react";
|
||||
import {Link} from "react-router-dom";
|
||||
function Projects() {
|
||||
const [projects, setProjects] = useState([]);
|
||||
const [error, setError] = useState(null);
|
||||
@@ -8,7 +9,7 @@ function Projects() {
|
||||
useEffect(() => {
|
||||
const fetchProjects = async () => {
|
||||
try {
|
||||
const response = await fetch('/api/projects');
|
||||
const response = await fetch('/api/projects/');
|
||||
if (!response.ok) {
|
||||
throw new Error(`Erreur HTTP: ${response.status}`);
|
||||
}
|
||||
@@ -35,9 +36,7 @@ function Projects() {
|
||||
))}
|
||||
</div>
|
||||
<div className="show-more-container">
|
||||
<p className="show-more-link">
|
||||
Show more
|
||||
</p>
|
||||
<Link to="/projets" className="show-more-link">Show more</Link>
|
||||
</div>
|
||||
</section>
|
||||
)
|
||||
|
||||
@@ -9,7 +9,7 @@ function Skills() {
|
||||
useEffect(() => {
|
||||
const fetchSkills = async () => {
|
||||
try {
|
||||
const response = await fetch('/api/skills');
|
||||
const response = await fetch('/api/skills/');
|
||||
if (!response.ok) {
|
||||
throw new Error(`Erreur HTTP: ${response.status}`);
|
||||
}
|
||||
|
||||
+4
-1
@@ -2,9 +2,12 @@ import { StrictMode } from 'react'
|
||||
import { createRoot } from 'react-dom/client'
|
||||
import './index.css'
|
||||
import App from './App.jsx'
|
||||
import { BrowserRouter } from 'react-router-dom';
|
||||
|
||||
createRoot(document.getElementById('root')).render(
|
||||
<StrictMode>
|
||||
<App />
|
||||
<BrowserRouter>
|
||||
<App />
|
||||
</BrowserRouter>
|
||||
</StrictMode>,
|
||||
)
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
import Home from '../components/Home.jsx'
|
||||
import Experiences from '../components/Experiences.jsx'
|
||||
import Projects from '../components/Projects.jsx'
|
||||
import Skills from '../components/Skills.jsx'
|
||||
import Footer from '../components/Footer.jsx'
|
||||
function HomePage() {
|
||||
return (
|
||||
<div>
|
||||
<Home/>
|
||||
<Experiences/>
|
||||
<Projects/>
|
||||
<Skills/>
|
||||
<Footer/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
export default HomePage;
|
||||
@@ -0,0 +1,38 @@
|
||||
import React, {useEffect, useState} from "react";
|
||||
import SingleProject from "../components/SingleProject.jsx";
|
||||
function ProjectsPage() {
|
||||
const [projects, setProjects] = useState([]);
|
||||
const [error, setError] = useState(null);
|
||||
|
||||
useEffect(() => {
|
||||
const fetchProjects = async () => {
|
||||
try {
|
||||
const response = await fetch('/api/projects/');
|
||||
if (!response.ok) {
|
||||
throw new Error(`Erreur HTTP: ${response.status}`);
|
||||
}
|
||||
const data = await response.json();
|
||||
setProjects(data.data);
|
||||
} catch (err) {
|
||||
setError(err.message);
|
||||
}
|
||||
};
|
||||
fetchProjects();
|
||||
}, []);
|
||||
|
||||
if (error) {
|
||||
return <div>Erreur lors de la récupération des données : {error}</div>;
|
||||
}
|
||||
|
||||
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h1>Voici mes projets</h1>;
|
||||
{projects.map(project => (
|
||||
<SingleProject image={project.image_name} title={project.title} description={project.description} skills={project.skills} color={project.color} nbImage={project.nb_image}/>
|
||||
))}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
export default ProjectsPage;
|
||||
Reference in New Issue
Block a user