TP1 React
1 Exercice – Composants et Props. 1
Latest React App Setup (Vite) Using Visual Studio Code. 1
2.3 Open Terminal in VS Code. 2
2.4 Create React project with Vite. 2
2.9 Project structure (important). 3
1 Exercice – Composants et Props
Objectif : Créer une petite application React qui
utilise plusieurs composants et passe des propriétés (props) entre eux.

2 Etapes
Latest React App Setup (Vite) Using Visual Studio Code
2.1 Install required tools
Check:
node -v
npm -v
2.2 Open VS Code
- Open VS Code
- Click: File → Open Folder (choose where you want your project)
2.3 Open Terminal in VS Code
- Menu: Terminal → New Terminal (choose cmd)
2.4 Create React project with Vite
npm create vite@latest my-app
(Select: React → JavaScript
2.5 Move into the project
cd my-app
2.6 Install dependencies
npm install
2.7 Run the app
npm run dev
2.8 Open in browser
Pour quitter taper q
2.9 Project structure (important)
- src/ → main code
- src/App.jsx → main component
- src/main.jsx → entry point
3 Instructions :
Dans App.jsx
- Créer un composant (function)
Welcome - Ce composant reçoit une prop
name.
o Il affiche :
<h1 className="welcome-text">Hello, {name}</h1>
- Créer un composant
Navbar - Ce composant reçoit une prop
src. - Il affiche une image (
img) avec la source passée viasrcet la classe CSSnavbar-photo. - Le tout doit être dans une balise
<nav>avec la classenavbar. - Créer un composant
Photo - Ce composant reçoit
srcetalten props. - Il affiche une image (
img) avec ces props et la classe CSSphoto. - Si
altn’est pas fourni, utiliser"photo"par défaut. - Créer le composant principal
App - Ce composant doit inclure :
- Le composant
Navbaravec la propsrcpointant vers/saida.png. - Deux composants
Welcomeavec les noms"Ahmed"et"Amine"dans un<div>séparé. - Le composant
Photoavec la propsrcpointant aussi vers/saida.pngetalt="Profile". - Tous les éléments doivent être
contenus dans une
<div>avec la classeapp-container. - Importer le fichier CSS
import './App.css'au début du fichier.
4 Solution
|
App.jsx
import './App.css' function Welcome(p) { return <h1 className="welcome-text">Hello, {p.name}</h1>; }
function Navbar(p) { return ( <nav className="navbar"> <img src={p.src} alt="Profile" className="navbar-photo" /> </nav> ); } function Photo({ src, alt }) { return <img src={src} alt={alt || "photo"} className="photo" />; }
function App() { return ( <div className="app-container"> <Navbar src="/saida.png" /> {/* replace with your photo path */} <div className='div'> <Welcome name="Ahmed" />
<Welcome name="Amine" /> </div> <Photo src="/saida.png" alt="Profile" /> </div> ); }
export default App;
|
Main.jsx import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' import './index.css' import App from './App.jsx'
createRoot(document.getElementById('root')).render( <StrictMode> <App /> </StrictMode>, )
|
|
App.css
/* Align all components in a row */ .app-container { display: flex; align-items: center; gap: 20px; /* space between components */ }
/* Photo styling */ .photo { width: 50px; height: 50px; border-radius: 50%; /* circular photo */ object-fit: cover; }
/* Welcome text styling */ .welcome-text { margin: 0; width: 300px; font-size: 1.5rem; } .div{ display:flex; flex-direction: column;} |