Exercices - JSX et les props
La section suivante présente une série d’exercices visant à renforcer votre compréhension de la transmission des données entre composants et la réutilisabilité de ceux-ci.
Exercice 1 : Affichage dynamique d’un message d’accueil
Objectif : Créez un composant WelcomeBanner qui affiche un message de bienvenue basé sur la prop username.
Instructions
- Créez un composant
WelcomeBannerqui prend une propusername(string) et affiche :"Bienvenue sur notre site, [username] !". - Dans le composant
App, utilisezWelcomeBanneravec trois utilisateurs différents (par exemple, “Alice”, “Bob”, “Charlie”).
Vérification
- Vérifiez que le message s’affiche correctement pour chaque utilisateur.
- Changez la valeur de
usernamedansAppet assurez-vous que le message se met à jour dynamiquement.
Exemple d’affichage attendu
Bienvenue sur notre site, Alice !
Bienvenue sur notre site, Bob !
Bienvenue sur notre site, Charlie !Exercice 2 : Afficher l’état d’un capteur
Objectif : Afficher dynamiquement l’état d’un capteur (actif ou inactif) selon une prop.
Instructions
- Créez un composant
SensorStatusqui prend une propisActive(booléen). - Si
isActiveesttrue, affichez"Le capteur est actif.", sinon affichez"Le capteur est inactif.". - Testez plusieurs valeurs de
isActivedansApp(par exemple,trueetfalse).
Vérification
- Vérifiez que le texte change correctement en fonction de la valeur de
isActive. - Testez avec des valeurs différentes pour vous assurer que le composant réagit bien.
Exemple d’affichage attendu
Le capteur est actif.
Le capteur est inactif.Exercice 3 : Vérifier la disponibilité d’une salle
Objectif : Utiliser une condition avec props pour indiquer si une salle est disponible ou occupée.
Instructions
- Créez un composant
RoomAvailabilityqui prend une propisAvailable(booléen). - Affichez
"Salle disponible"siisAvailableesttrue, sinon"Salle occupée". - Dans
App, affichezRoomAvailabilityavec différentes valeurs (par exemple,trueetfalse).
Vérification
- Vérifiez que le texte change en fonction de la disponibilité de la salle.
- Testez avec plusieurs valeurs pour vous assurer que le composant fonctionne correctement.
Exemple d’affichage attendu
Salle disponible
Salle occupéeExercice 4 : Liste des cours disponibles
Objectif : Afficher une liste de cours en utilisant un tableau passé en prop.
Instructions
- Créez un composant
CourseListqui prend une propcourses(tableau de strings). - Affichez chaque cours sous forme de
<li>. - Dans
App, testezCourseListavec au moins deux listes différentes (par exemple,["Mathématiques", "Informatique", "Histoire"]et["Biologie", "Physique", "Philosophie"]).
Vérification
- Vérifiez que chaque élément du tableau est bien affiché dans une liste.
- Testez avec des tableaux de différentes tailles pour vous assurer que le composant s’adapte.
Exemple d’affichage attendu
Cours disponibles :
- Mathématiques
- Informatique
- Histoire
Autres cours :
- Biologie
- Physique
- PhilosophieExercice 5 : Profil d’un véhicule
Objectif : Passer un objet en prop et afficher dynamiquement les informations d’un véhicule.
Instructions
- Créez un composant
VehicleProfilequi prend une propvehicle(objet{ brand, model, year }). - Affichez les informations sous forme de paragraphe (par exemple,
"Toyota Corolla (2020)"). - Dans
App, affichezVehicleProfilepour plusieurs véhicules (par exemple,{ brand: "Toyota", model: "Corolla", year: 2020 }).
Vérification
- Vérifiez que les informations du véhicule sont correctement affichées.
- Testez avec plusieurs objets pour vous assurer que le composant fonctionne avec différentes données.
Exemple d’affichage attendu
Toyota Corolla (2020)
Ford Mustang (2022)
Tesla Model 3 (2023)Exercice 6 : Bouton interactif pour activer un mode
Objectif : Transmettre une fonction en prop et l’exécuter dans un composant enfant.
Instructions
- Créez un composant
ModeButtonqui prend une proponActivate(fonction). - Lorsque l’utilisateur clique sur le bouton, la fonction doit être exécutée.
- Dans
App, définissez une fonctionactivateModequi affiche une alerte (par exemple,"Mode activé !").
Vérification
- Vérifiez que l’alerte s’affiche bien lorsque vous cliquez sur le bouton.
- Testez avec différentes fonctions pour vous assurer que le composant est réutilisable.
Exercice 7 : Liste de tâches avec état d’achèvement
Objectif : Générer dynamiquement des tâches avec un statut.
Instructions
- Définissez un tableau
taskscontenant{ id, title, completed }. - Créez un composant
TaskListqui génère dynamiquement des tâches en utilisantmap(). - Affichez
TaskListdansApp.
Vérification
- Vérifiez que chaque tâche est affichée avec son statut (✅ ou ❌).
- Testez avec plusieurs tableaux de tâches pour vous assurer que le composant s’adapte.
Exemple d’affichage attendu
- Faire les courses ✅
- Nettoyer la voiture ❌
- Étudier React ✅Exercice 8 : Carte météo
Objectif : Afficher des informations météo en utilisant des props.
Instructions
- Créez un composant
WeatherCardqui prend en props{ temperature, condition }. - Affichez
"Température : X°C - Condition : [condition]". - Testez différentes valeurs dans
App(par exemple,{ temperature: 22, condition: "Ensoleillé" }).
Vérification
- Vérifiez que les informations météo sont correctement affichées.
- Testez avec plusieurs jeux de données pour vous assurer que le composant fonctionne correctement.
Exemple d’affichage attendu
Température : 22°C - Condition : Ensoleillé
Température : 15°C - Condition : Nuageux
Température : -5°C - Condition : NeigeuxExercice 9 : Gestion des places de parking
Objectif : Indiquer dynamiquement si une place est disponible et permettre la réservation.
Instructions
- Créez un composant
ParkingSpotqui prendisAvailableetonReserveen props. - Si
isAvailableesttrue, affichez"Place disponible"avec un bouton"Réserver". - Lorsqu’on clique sur
"Réserver", exécutezonReserve. - Testez différentes valeurs de
isAvailableet deonReservedansApp.
Vérification
- Vérifiez que le texte et le bouton s’affichent correctement en fonction de
isAvailable. - Testez la fonction
onReservepour vous assurer qu’elle est bien exécutée.
Exemple d’affichage attendu
Place disponible [Réserver]
Place occupée