JSX (JavaScript) - JSX (JavaScript)
JSX ( JavaScript Syntax Extension et parfois appelé JavaScript XML ) est une extension de la syntaxe du langage JavaScript qui permet de structurer le rendu des composants à l'aide d'une syntaxe familière à de nombreux développeurs. Il est similaire en apparence au HTML .
Les composants React sont généralement écrits à l'aide de JSX, bien qu'ils ne soient pas obligés de l'être, car les composants peuvent également être écrits en JavaScript pur. JSX est similaire à une autre syntaxe d'extension créée par Facebook pour PHP appelée XHP .
Balisage
Un exemple de code JSX :
const App = () => {
return (
<div>
<p>Header</p>
<p>Content</p>
<p>Footer</p>
</div>
);
}
Éléments imbriqués
Plusieurs éléments au même niveau doivent être enveloppés dans un seul élément React tel que l' <div>élément illustré ci-dessus, un fragment délimité par <Fragment>ou sous sa forme abrégée <>, ou renvoyé sous forme de tableau.
Les attributs
JSX fournit une gamme d'attributs d'élément conçus pour refléter ceux fournis par HTML. Des attributs personnalisés peuvent également être transmis au composant. Tous les attributs seront reçus par le composant en tant qu'accessoires.
Expressions JavaScript
Les expressions JavaScript (mais pas les instructions ) peuvent être utilisées dans JSX avec des accolades{} :
<h1>{10+1}</h1>
L'exemple ci-dessus affichera :
<h1>11</h1>
Expressions conditionnelles
Les instructions If–else ne peuvent pas être utilisées dans JSX, mais des expressions conditionnelles peuvent être utilisées à la place. L'exemple ci-dessous sera rendu sous forme de chaîne car est égal à 1.
{ i === 1 ? 'true' : 'false' }'true'i
const App = () => {
const i = 1;
return (
<div>
<h1>{ i === 1 ? 'true' : 'false' }</h1>
</div>
);
}
Ce qui précède affichera :
<div>
<h1>true</h1>
</div>
Les fonctions et JSX peuvent être utilisés au conditionnel :
const App = () => {
const sections = [1, 2, 3];
return (
<div>
{sections.map((n,i) => (
/* 'key' is used by react to keep track of list items and their changes */
/* Each 'key' must be unique */
<div key={"section-" + n}>
Section {n} {i === 0 && <span>(first)</span>}
</div>
))}
</div>
);
}
Ce qui précède affichera :
<div>
<div>Section 1<span>(first)</span></div>
<div>Section 2</div>
<div>Section 3</div>
</div>
Le code écrit en JSX nécessite une conversion avec un outil tel que Babel avant de pouvoir être compris par les navigateurs Web. Ce traitement est généralement effectué au cours d'un processus de création de logiciel avant le déploiement de l'application .