En React, on affiche différents éléments selon des conditions. Comme on ne peut pas utiliser if/else directement dans le JSX (ce sont des blocs, pas des expressions), on utilise d'autres techniques.
function Message({ estConnecte }) {
if (estConnecte) {
return <p>Bienvenue !</p>;
} else {
return <p>Veuillez vous connecter.</p>;
}
}
// Ou avec un early return :
function Message({ estConnecte }) {
if (!estConnecte) {
return <p>Veuillez vous connecter.</p>;
}
return <p>Bienvenue !</p>;
}
? :L'approche la plus courante dans le JSX :
function Message({ estConnecte }) {
return (
<div>
{estConnecte
? <p>Bienvenue !</p>
: <p>Veuillez vous connecter.</p>
}
</div>
);
}
// Pour du texte simple :
<p>Statut : {estConnecte ? '🟢 En ligne' : '🔴 Hors ligne'}</p>
&& (ET logique)Pour afficher quelque chose ou rien :
function Notifications({ count }) {
return (
<div>
<h2>Tableau de bord</h2>
{count > 0 && <p>Vous avez {count} notifications</p>}
{/* Si count > 0 → affiche le <p> */}
{/* Si count === 0 → n'affiche rien */}
</div>
);
}
&& : Si la partie gauche est 0 (et non false), React affichera 0 à l'écran !
// ❌ Affiche "0" si count vaut 0
{count && <p>Notifs : {count}</p>}
// ✅ Correct
{count > 0 && <p>Notifs : {count}</p>}
On peut stocker du JSX dans une variable :
function StatusIcon({ status }) {
let icone;
if (status === 'ok') {
icone = <span style={{color: 'green'}}>✅ OK</span>;
} else if (status === 'warning') {
icone = <span style={{color: 'orange'}}>⚠️ Attention</span>;
} else {
icone = <span style={{color: 'red'}}>❌ Erreur</span>;
}
return <div>Statut : {icone}</div>;
}
// Avec un objet (souvent plus propre qu'un switch)
function Badge({ type }) {
const config = {
admin: { couleur: '#f44336', label: 'Admin' },
editeur: { couleur: '#ff9800', label: 'Éditeur' },
membre: { couleur: '#4caf50', label: 'Membre' }
};
const { couleur, label } = config[type] || config.membre;
return (
<span style={{ background: couleur, padding: '3px 10px', borderRadius: '12px', color: 'white' }}>
{label}
</span>
);
}
Un composant peut retourner null pour ne rien afficher :
function BannierePromo({ visible }) {
if (!visible) return null;
return <div className="promo">🎉 Promo -50% !</div>;
}
▼ Toutes les techniques de rendu conditionnel
return ou pour un early return.? : — le plus courant dans le JSX (A ou B).&& — afficher quelque chose ou rien (attention au 0).return null — ne rien rendre du tout.