Réagir JSX
Qu'est-ce que JSX ?
JSX signifie JavaScript XML.
JSX nous permet d'écrire du HTML dans React.
JSX facilite l'écriture et l'ajout de HTML dans React.
Codage JSX
JSX nous permet d'écrire des éléments HTML en JavaScript et de les placer dans le DOM sans aucune createElement()
et/ou
appendChild()
méthode.
JSX convertit les balises HTML en éléments de réaction.
Vous n'êtes pas obligé d'utiliser JSX, mais JSX facilite l'écriture d'applications React.
Voici deux exemples. Le premier utilise JSX et le second non :
Exemple 1
JSX :
const myelement = <h1>I Love JSX!</h1>;
ReactDOM.render(myelement, document.getElementById('root'));
Exemple 2
Sans JSX :
const myelement = React.createElement('h1', {}, 'I do not use JSX!');
ReactDOM.render(myelement, document.getElementById('root'));
Comme vous pouvez le voir dans le premier exemple, JSX nous permet d'écrire du HTML directement dans le code JavaScript.
JSX est une extension du langage JavaScript basé sur ES6 et est traduit en JavaScript normal au moment de l'exécution.
Obtenir une certification!
95 $ S'INSCRIRE
Expressions dans JSX
Avec JSX, vous pouvez écrire des expressions à l'intérieur d'accolades { }
.
L'expression peut être une variable ou une propriété React, ou toute autre expression JavaScript valide. JSX exécutera l'expression et renverra le résultat :
Exemple
Exécutez l'expression 5 + 5
:
const myelement = <h1>React is {5 + 5} times better with JSX</h1>;
Insertion d'un gros bloc de HTML
Pour écrire du HTML sur plusieurs lignes, mettez le HTML entre parenthèses :
Exemple
Créez une liste avec trois éléments de liste :
const myelement = (
<ul>
<li>Apples</li>
<li>Bananas</li>
<li>Cherries</li>
</ul>
);
Un élément de niveau supérieur
Le code HTML doit être encapsulé dans UN élément de niveau supérieur.
Donc, si vous aimez écrire deux paragraphes, vous devez les mettre à l'intérieur d'un élément parent, comme un div
élément.
Exemple
Enveloppez deux paragraphes dans un élément DIV :
const myelement = (
<div>
<p>I am a paragraph.</p>
<p>I am a paragraph too.</p>
</div>
);
JSX lancera une erreur si le HTML n'est pas correct ou s'il manque un élément parent au HTML.
Alternativement, vous pouvez utiliser un "fragment" pour envelopper plusieurs lignes. Cela évitera d'ajouter inutilement des nœuds supplémentaires au DOM.
Un fragment ressemble à une balise HTML vide : <></>
.
Exemple
Enveloppez deux paragraphes dans un fragment :
const myelement = (
<>
<p>I am a paragraph.</p>
<p>I am a paragraph too.</p>
</>
);
Les éléments doivent être fermés
JSX suit les règles XML et, par conséquent, les éléments HTML doivent être correctement fermés.
Exemple
Fermez les éléments vides avec/>
const myelement = <input type="text" />;
JSX lancera une erreur si le HTML n'est pas correctement fermé.
Attribut classe = className
L' class
attribut est un attribut très utilisé en HTML, mais comme JSX est rendu en JavaScript et que le
class
mot-clé est un mot réservé en JavaScript, vous n'êtes pas autorisé à l'utiliser dans JSX.
Utilisez l'attribut à la className
place.
JSX a résolu ce problème en utilisant à la className
place. Lorsque JSX est rendu, il traduit className
les attributs en class
attributs.
Exemple
Utilisez l'attribut className
au lieu de
class
dans JSX :
const myelement = <h1 className="myclass">Hello World</h1>;
Conditions - si les déclarations
React prend en charge les if
instructions, mais pas dans JSX.
Pour pouvoir utiliser des instructions conditionnelles dans JSX, vous devez placer les if
instructions en dehors de JSX, ou vous pouvez utiliser une expression ternaire à la place :
Option 1:
Écrivez if
des instructions en dehors du code JSX :
Exemple
Écrivez "Bonjour" si x
est inférieur à 10, sinon "Au revoir":
const x = 5;
let text = "Goodbye";
if (x < 10) {
text = "Hello";
}
const myelement = <h1>{text}</h1>;
Option 2:
Utilisez plutôt des expressions ternaires :
Exemple
Écrivez "Bonjour" si x
est inférieur à 10, sinon "Au revoir":
const x = 5;
const myelement = <h1>{(x) < 10 ? "Hello" : "Goodbye"}</h1>;
Notez que pour intégrer une expression JavaScript dans JSX, le JavaScript doit être entouré d'accolades, {}
.