OUJOOD.COM
Introduction
Les conditionnelles sont un aspect fondamental du développement React qui permettent d'afficher dynamiquement du contenu basé sur des conditions. Contrairement au JavaScript classique, React utilise une syntaxe spéciale pour intégrer des instructions conditionnelles dans le JSX.
Dans ce chapitre, nous allons explorer :
- Comment utiliser des instructions
if/elsedans React. - L'utilisation de l'opérateur ternaire pour simplifier les conditions.
- Des exemples pratiques pour illustrer leur fonctionnement.
Conditionnelles dans React
Dans React, il n'est pas possible d'utiliser directement des instructions if/else dans le JSX. Cependant, il existe plusieurs façons d'implémenter des conditions :
- Opérateur ternaire : Une manière concise d'écrire des conditions simples.
- Élément court-circuit : Utilise la logique booléenne pour rendre ou ignorer du contenu.
- Fonctions externes : Pour des conditions plus complexes, vous pouvez utiliser des fonctions JavaScript.
1. Opérateur Ternaire
L'opérateur ternaire est une méthode simple et concise pour écrire des conditions dans React. Voici un exemple où un message différent est affiché selon la valeur d'une variable :
function Message({ isConnected }) {
return (
<div>
{isConnected ? (
<p>Bienvenue ! Vous êtes connecté.</p>
) : (
<p>Veuillez vous connecter pour continuer.</p>
)}
</div>
);
}
ReactDOM.render(<Message isConnected={true} />, document.getElementById('root'));
Explication détaillée :
-
function Message({ isConnected }) { ... }:- Cette fonction définit un composant appelé
Messagequi accepte une prop appeléeisConnected.
- Cette fonction définit un composant appelé
-
{isConnected ? (...) : (...)}:- Cet opérateur ternaire vérifie la valeur de
isConnected. - Si
isConnectedest vrai (true), le premier élément<p>est rendu. - Sinon, le deuxième élément
<p>est affiché.
- Cet opérateur ternaire vérifie la valeur de
-
ReactDOM.render(<Message isConnected={true} />, document.getElementById('root'));:- Cette ligne rend le composant
Messageavec la propisConnecteddéfinie àtrue. - Le message "Bienvenue ! Vous êtes connecté." sera affiché dans ce cas.
- Cette ligne rend le composant
2. Élément Court-Circuit
L'élément court-circuit est une autre méthode pour afficher du contenu conditionnellement. Il s'agit d'une technique utilisant la logique booléenne pour rendre ou ignorer un élément. Voici un exemple :
function Bienvenue({ nom }) {
const utilisateurConnecte = nom;
return (
<div>
{utilisateurConnecte && <p>Bienvenue, {nom} !</p>}
</div>
);
}
ReactDOM.render(<Bienvenue nom="Alice" />, document.getElementById('root'));
Explication détaillée :
-
const utilisateurConnecte = nom;:- Cette variable représente l'état de connexion de l'utilisateur.
-
{utilisateurConnecte && <p>Bienvenue, {nom} !</p>}:- Ce fragment utilise la logique booléenne pour afficher le contenu uniquement si
utilisateurConnecteest vrai. - Ici, si
noma une valeur (non vide ou non nulle), le texte "Bienvenue, Alice !" sera affiché.
- Ce fragment utilise la logique booléenne pour afficher le contenu uniquement si
-
ReactDOM.render(<Bienvenue nom="Alice" />, document.getElementById('root'));:- Cette ligne rend le composant
Bienvenueavec la propnomdéfinie à "Alice".
- Cette ligne rend le composant
3. Fonctions Externes pour des Conditions Complexes
Pour des conditions plus complexes, il est souvent préférable d'utiliser des fonctions externes. Voici un exemple où une fonction détermine quel message doit être affiché :
function determinerMessage(connected) {
if (connected) {
return <p>Bienvenue ! Vous êtes connecté.</p>;
} else {
return <p>Veuillez vous connecter pour continuer.</p>;
}
}
function Message({ isConnected }) {
return (
<div>
{determinerMessage(isConnected)}
</div>
);
}
ReactDOM.render(<Message isConnected={false} />, document.getElementById('root'));
Explication détaillée :
-
function determinerMessage(connected) { ... }:- Cette fonction prend un paramètre
connectedet retourne un élément JSX en fonction de sa valeur.
- Cette fonction prend un paramètre
-
{determinerMessage(isConnected)}:- Ce fragment appelle la fonction
determinerMessagepour déterminer quel message doit être affiché.
- Ce fragment appelle la fonction
-
ReactDOM.render(<Message isConnected={false} />, document.getElementById('root'));:- Cette ligne rend le composant
Messageavec la propisConnecteddéfinie àfalse. - Le message "Veuillez vous connecter pour continuer." sera affiché dans ce cas.
- Cette ligne rend le composant
4. Exemple Complet : Affichage Conditionnel dans un Formulaire
Imaginons que vous souhaitiez afficher un message d'erreur lorsque l'utilisateur ne remplit pas un champ obligatoire dans un formulaire. Voici comment cela peut être fait :
import React, { useState } from 'react';
function Formulaire() {
const [nom, setNom] = useState("");
function handleSubmit(event) {
event.preventDefault();
if (nom.trim() === "") {
alert("Veuillez entrer un nom valide !");
} else {
alert(`Merci, ${nom} !`);
}
}
return (
<form onSubmit={handleSubmit}>
<label>
Entrez votre nom :
<input type="text" value={nom} onChange={(e) => setNom(e.target.value)} />
</label>
<button type="submit">Envoyer</button>
{nom.trim() === "" && <p style={{ color: "red" }}>Ce champ est obligatoire.</p>}
</form>
);
}
ReactDOM.render(<Formulaire />, document.getElementById('root'));
Explication détaillée :
-
const [nom, setNom] = useState("");:- Initialise l'état
nomavec une chaîne vide. setNomest une fonction pour mettre à jour cet état.
- Initialise l'état
-
function handleSubmit(event):- Cette fonction est appelée lors de la soumission du formulaire.
event.preventDefault()empêche le comportement par défaut du navigateur (rechargement de la page).- Si
nom.trim() === "", une alerte indiquant que le champ est obligatoire est affichée. - Sinon, une alerte personnalisée contenant le nom est affichée.
-
{nom.trim() === "" && <p style={{ color: "red" }}>Ce champ est obligatoire.</p>}:- Ce fragment utilise la logique booléenne pour afficher un message d'erreur si le champ est vide.
Meilleures Pratiques pour les Conditionnelles
Pour utiliser les conditionnelles efficacement dans vos applications React, voici quelques conseils :
- Privilégiez l'opérateur ternaire pour des conditions simples : Il rend le code plus concis et lisible.
- Utilisez des fonctions externes pour des conditions complexes : Cela améliore la maintenabilité et clarifie le JSX.
- Évitez les instructions if/else directement dans JSX : Préférez des fonctions ou des variables pour garder le JSX propre.
Conclusion
Vous avez maintenant appris à utiliser les conditionnelles dans React pour afficher dynamiquement du contenu basé sur des conditions. En combinant opérateur ternaire, logique booléenne et fonctions externes, vous pouvez créer des interfaces utilisateur interactives et intelligentes.
Prochain chapitre : Listes React