OUJOOD.COM
Introduction
JSX (JavaScript XML) est une extension de syntaxe qui permet d'écrire du HTML-like directement dans JavaScript. Bien qu'il ressemble à du HTML classique, JSX est transpilé en JavaScript pur lors de la compilation. Cela facilite la création d'interfaces utilisateur complexes dans React.
Dans ce chapitre, nous allons explorer :
- Qu'est-ce que JSX ?
- Comment JSX fonctionne-t-il dans React ?
- Des exemples pratiques pour utiliser JSX efficacement.
Quelle est la Relation entre JSX, XML et React ?
Bien que JSX soit souvent comparé à XML ou HTML, il est important de comprendre qu'il s'agit d'une syntaxe spécifique à React et non d'un langage de balisage complet comme XML. Cette section clarifie les différences et explique pourquoi JSX est si utile dans React.
1. Qu'est-ce que XML ?
Le XML (eXtensible Markup Language) est un langage de balisage conçu pour stocker et transporter des données. Il permet de créer des balises personnalisées pour représenter des structures de données complexes. Par exemple :
<personne> <nom>Alice</nom> <age>25</age> </personne>
Explication :
<personne>
: Une balise personnalisée créée par l'utilisateur pour représenter une personne.<nom>
et<age>
: Sous-balises contenant les données spécifiques à la personne.
2. Qu'est-ce que JSX ?
Le JSX (JavaScript XML) est une extension de syntaxe utilisée dans React pour écrire du code ressemblant à du HTML directement dans JavaScript. Bien qu'il ressemble à XML/HTML, JSX est transpilé en JavaScript pur lors de la compilation. Voici un exemple simple :
const element = ( <div className="conteneur"> <h1>Bienvenue sur notre site !</h1> <p>Ceci est un exemple de JSX.</p> </div> );
Explication :
const element = (...)
: Définit une constante contenant du JSX.<div className="conteneur">
: Crée un élémentdiv
avec une classe CSS appeléeconteneur
.<h1>
et<p>
: Éléments enfants imbriqués dans ladiv
.
3. Comparaison : Comment JSX Diffère-t-il de XML ?
Contrairement à XML, JSX n'est pas un langage autonome mais une syntaxe intégrée à JavaScript. Voici quelques différences clés :
- Balisage personnalisé limité : Dans JSX, vous ne pouvez utiliser que des balises valides en HTML ou des composants React. Par exemple,
<personne>
n'est pas autorisé, sauf si c'est un composant React défini. - Intégration de JavaScript : Vous pouvez insérer du code JavaScript directement dans JSX via des accolades
{}
. Cela n'est pas possible dans XML. - Transpilation obligatoire : JSX doit être transpilé en JavaScript pur avant son exécution, tandis qu'XML est utilisé tel quel pour représenter des données.
Voici un exemple montrant comment JSX intègre JavaScript directement dans sa syntaxe :
const nom = "Alice"; const element = ( <div> <h1>Bonjour, {nom} !</h1> <p>Aujourd'hui est le {new Date().toLocaleDateString()}.</p> </div> );
Explication :
const nom = "Alice";
: Déclare une variable contenant une chaîne de caractères.{nom}
: Insère dynamiquement la valeur de la variablenom
dans le JSX.{new Date().toLocaleDateString()}
: Intègre une expression JavaScript pour afficher la date actuelle.
4. Transpilation de JSX en JavaScript Pur
Lorsque vous utilisez JSX, React le transpile automatiquement en JavaScript pur avant son exécution. Voici un exemple de transpilation :
// JSX const element = ( <div> <h1>Bienvenue !</h1> </div> ); // Transpilation en JavaScript pur const element = React.createElement( 'div', null, React.createElement('h1', null, 'Bienvenue !') );
Explication :
React.createElement()
: Fonction utilisée par React pour créer des éléments basés sur le JSX fourni.'div'
: Type d'élément à créer.null
: Représente les props (aucune prop ici).'Bienvenue !'
: Contenu texte de l'élémenth1
.
5. Pourquoi Utiliser JSX dans React ?
JSX simplifie considérablement la création d'interfaces utilisateur dans React en combinant logique JavaScript et structure HTML-like. Voici ses principaux avantages :
- Syntaxe intuitive : Ressemble à du HTML, ce qui rend le code plus lisible et facile à comprendre.
- Intégration fluide avec JavaScript : Permet d'insérer des expressions JavaScript directement dans le balisage.
- Performances optimisées : React traite efficacement le JSX pour rendre l'interface utilisateur.
6. Conclusion
Bien que JSX ressemble à XML/HTML, il est une syntaxe unique développée spécifiquement pour React. En combinant logique JavaScript et structure HTML-like, JSX rend la création d'interfaces utilisateur plus intuitive et fluide. Maintenant que vous comprenez cette distinction, passons à l'utilisation pratique de JSX dans React.
Comment JSX Fonctionne-t-il dans React ?
Lorsque vous écrivez du JSX dans un composant React, celui-ci est transpilé en appels JavaScript purs. Par exemple, le code JSX suivant :
const element = <h1>Bonjour, monde !</h1>;
Est transpilé en :
const element = React.createElement( 'h1', null, 'Bonjour, monde !' );
Explication :
React.createElement()
: Crée un élément React correspondant au JSX spécifié.- Les arguments sont : le type d'élément (
'h1'
), les props (null
si aucune), et les enfants ('Bonjour, monde !'
).
Intégration de Variables dans JSX
Vous pouvez intégrer des variables JavaScript dans du JSX en utilisant des accolades ({}
). Cela permet de rendre du contenu dynamique basé sur des données.
function Saluer(props) { return <h1>Bonjour, {props.nom} !</h1>; } ReactDOM.render(<Saluer nom="Alice" />, document.getElementById('root'));
Explication :
{props.nom}
: Insère dynamiquement la valeur de la propriéténom
dans le JSX.<Saluer nom="Alice" />
: Passe la valeurAlice
à la propriéténom
du composantSaluer
.
Conditions et Boucles dans JSX
Bien que JSX ne supporte pas directement les instructions conditionnelles ou les boucles, vous pouvez utiliser des expressions JavaScript pour atteindre ces objectifs.
1. Conditions avec des Opérateurs Ternaires
function Message({ isConnected }) { return ( <div> {isConnected ? ( <p>Bienvenue ! Vous êtes connecté.</p> ) : ( <p>Veuillez vous connecter pour continuer.</p> )} </div> ); }
Explication :
{isConnected ? (...) : (...)}
: Utilise un opérateur ternaire pour afficher un message différent selon la valeur deisConnected
.
2. Boucles avec .map()
function ListeNoms({ noms }) { return ( <ul> {noms.map((nom, index) => ( <li key={index}>{nom}</li> ))} </ul> ); } const noms = ['Alice', 'Bob', 'Charlie']; ReactDOM.render(<ListeNoms noms={noms} />, document.getElementById('root'));
Explication :
{noms.map(...)}
: Itère sur le tableaunoms
pour générer dynamiquement des éléments<li>
.key={index}
: Ajoute une clé unique pour chaque élément, ce qui améliore les performances de React.
Conclusion
Vous avez maintenant appris à utiliser JSX dans vos applications React. En combinant JSX avec des expressions JavaScript, vous pouvez créer des interfaces utilisateur dynamiques et interactives.
Prochain chapitre : Composants React