v19.2Latest

Démarrage rapide

Bienvenue dans la documentation React ! Cette page vous présentera 80 % des concepts React que vous utiliserez au quotidien.

Vous apprendrez
  • Comment créer et imbriquer des composants
  • Comment ajouter du balisage et des styles
  • Comment afficher des données
  • Comment rendre des conditions et des listes
  • Comment répondre aux événements et mettre à jour l'écran
  • Comment partager des données entre les composants

Créer et imbriquer des composants

Les applications React sont constituées decomposants. Un composant est un élément de l'interface utilisateur (UI) qui possède sa propre logique et son apparence. Un composant peut être aussi petit qu'un bouton, ou aussi grand qu'une page entière.

Les composants React sont des fonctions JavaScript qui renvoient du balisage :

Maintenant que vous avez déclaréMyButton, vous pouvez l'imbriquer dans un autre composant :

Notez que<MyButton />commence par une majuscule. C'est ainsi que vous savez qu'il s'agit d'un composant React. Les noms des composants React doivent toujours commencer par une majuscule, tandis que les balises HTML doivent être en minuscules.

Regardez le résultat :

Les mots-clésexport defaultspécifient le composant principal dans le fichier. Si vous n'êtes pas familier avec une syntaxe JavaScript particulière,MDNetjavascript.infoproposent d'excellentes références.

Écrire du balisage avec JSX

La syntaxe de balisage que vous avez vue ci-dessus est appeléeJSX. Elle est facultative, mais la plupart des projets React utilisent JSX pour sa commodité. Tous lesoutils que nous recommandons pour le développement localprennent en charge JSX nativement.

JSX est plus strict que HTML. Vous devez fermer les balises comme<br />. Votre composant ne peut pas non plus renvoyer plusieurs balises JSX. Vous devez les regrouper dans un parent commun, comme un<div>...</div>ou un wrapper vide<>...</> :

Si vous avez beaucoup de HTML à convertir en JSX, vous pouvez utiliser unconvertisseur en ligne.

Ajouter des styles

Dans React, vous spécifiez une classe CSS avecclassName. Cela fonctionne de la même manière que l'attribut HTMLclass :

Ensuite, vous écrivez les règles CSS correspondantes dans un fichier CSS séparé :

React ne prescrit pas comment ajouter des fichiers CSS. Dans le cas le plus simple, vous ajouterez une balise<link>à votre HTML. Si vous utilisez un outil de build ou un framework, consultez sa documentation pour savoir comment ajouter un fichier CSS à votre projet.

Afficher des données

JSX vous permet d'intégrer du balisage dans JavaScript. Les accolades vous permettent de « revenir » en JavaScript afin d'incorporer une variable de votre code et de l'afficher à l'utilisateur. Par exemple, ceci afficherauser.name:

Vous pouvez également « revenir en JavaScript » depuis les attributs JSX, mais vous devez utiliser des accoladesau lieu deguillemets. Par exemple,className="avatar"passe la chaîne"avatar"comme classe CSS, maissrc={user.imageUrl}lit la valeur de la variable JavaScriptuser.imageUrl, puis passe cette valeur comme attributsrc :

Vous pouvez également placer des expressions plus complexes à l'intérieur des accolades JSX, par exemple,la concaténation de chaînes:

Dans l'exemple ci-dessus,style={{}}n'est pas une syntaxe spéciale, mais un objet{}régulier à l'intérieur des accolades JSXstyle={ }. Vous pouvez utiliser l'attributstylelorsque vos styles dépendent de variables JavaScript.

Rendu conditionnel

Dans React, il n'y a pas de syntaxe spéciale pour écrire des conditions. Vous utiliserez plutôt les mêmes techniques que lorsque vous écrivez du code JavaScript classique. Par exemple, vous pouvez utiliser une instructionifpour inclure conditionnellement du JSX :

Si vous préférez un code plus compact, vous pouvez utiliser l'opérateur conditionnel ?.Contrairement àif, il fonctionne à l'intérieur du JSX :

Lorsque vous n'avez pas besoin de la brancheelse, vous pouvez également utiliser la syntaxe plus courte de l'opérateur logique &&:

Toutes ces approches fonctionnent également pour spécifier conditionnellement des attributs. Si vous n'êtes pas familier avec certaines de ces syntaxes JavaScript, vous pouvez commencer par utiliser systématiquementif...else.

Rendu de listes

Vous vous appuierez sur des fonctionnalités JavaScript comme laboucle foret lafonction map() des tableauxpour afficher des listes de composants.

Par exemple, supposons que vous ayez un tableau de produits :

À l'intérieur de votre composant, utilisez la fonctionmap()pour transformer un tableau de produits en un tableau d'éléments<li> :

Notez que<li>possède un attributkey. Pour chaque élément d'une liste, vous devez passer une chaîne ou un nombre qui identifie de manière unique cet élément parmi ses frères et sœurs. En général, une clé doit provenir de vos données, comme un ID de base de données. React utilise vos clés pour savoir ce qui s'est passé si vous insérez, supprimez ou réorganisez ultérieurement les éléments.

Répondre aux événements

Vous pouvez répondre aux événements en déclarant des fonctionsgestionnaires d'événementsà l'intérieur de vos composants :

Notez queonClick={handleClick}n'a pas de parenthèses à la fin ! Neappelez pasla fonction gestionnaire d'événements : vous devez seulement lapasser en référence. React appellera votre gestionnaire d'événements lorsque l'utilisateur cliquera sur le bouton.

Mettre à jour l'écran

Souvent, vous voudrez que votre composant « se souvienne » de certaines informations et les affiche. Par exemple, vous voudrez peut-être compter le nombre de fois qu'un bouton est cliqué. Pour ce faire, ajoutez unétatà votre composant.

Tout d'abord, importezuseStatedepuis React :

Vous pouvez maintenant déclarer unevariable d'étatdans votre composant :

Vous obtenez deux choses deuseState: l'état actuel (count), et la fonction qui vous permet de le mettre à jour (setCount). Vous pouvez leur donner n'importe quel nom, mais la convention est d'écrire[quelqueChose, setQuelqueChose].

La première fois que le bouton est affiché,countsera0car vous avez passé0 à useState(). Lorsque vous souhaitez changer l'état, appelezsetCount()et passez-lui la nouvelle valeur. Cliquer sur ce bouton incrémentera le compteur :

React appellera à nouveau votre fonction de composant. Cette fois,countsera1. Puis ce sera2. Et ainsi de suite.

Si vous affichez le même composant plusieurs fois, chacun aura son propre état. Cliquez sur chaque bouton séparément :

Notez comment chaque bouton « se souvient » de son propre étatcountet n'affecte pas les autres boutons.

Utilisation des Hooks

Les fonctions commençant parusesont appeléesHooks.useStateest un Hook intégré fourni par React. Vous pouvez trouver d'autres Hooks intégrés dans laréférence API.Vous pouvez également écrire vos propres Hooks en combinant ceux existants.

Les Hooks sont plus restrictifs que les autres fonctions. Vous ne pouvez appeler les Hooks qu'au niveau supérieurde vos composants (ou d'autres Hooks). Si vous souhaitez utiliseruseStatedans une condition ou une boucle, extrayez un nouveau composant et placez-le là.

Partage de données entre composants

Dans l'exemple précédent, chaqueMyButtonavait son proprecountindépendant, et lorsque chaque bouton était cliqué, seul lecountdu bouton cliqué changeait :

Diagramme montrant un arbre de trois composants, un parent étiqueté MyApp et deux enfants étiquetés MyButton. Les deux composants MyButton contiennent un count avec la valeur zéro.Diagramme montrant un arbre de trois composants, un parent étiqueté MyApp et deux enfants étiquetés MyButton. Les deux composants MyButton contiennent un count avec la valeur zéro.

Initialement, l'étatcountde chaqueMyButtonest0

Le même diagramme que le précédent, avec le count du premier composant enfant MyButton mis en surbrillance indiquant un clic avec la valeur du count incrémentée à un. Le deuxième composant MyButton contient toujours la valeur zéro.Le même diagramme que le précédent, avec le count du premier composant enfant MyButton mis en surbrillance indiquant un clic avec la valeur du count incrémentée à un. Le deuxième composant MyButton contient toujours la valeur zéro.

Le premierMyButtonmet à jour soncount à 1

Cependant, souvent vous aurez besoin que les composantspartagent des données et se mettent toujours à jour ensemble.

Pour que les deux composantsMyButtonaffichent le mêmecountet se mettent à jour ensemble, vous devez déplacer l'état des boutons individuels « vers le haut » vers le composant le plus proche qui les contient tous.

Dans cet exemple, c'estMyApp:

Diagramme montrant un arbre de trois composants, un parent étiqueté MyApp et deux enfants étiquetés MyButton. MyApp contient une valeur de compteur égale à zéro qui est transmise aux deux composants MyButton, qui affichent également la valeur zéro.Diagramme montrant un arbre de trois composants, un parent étiqueté MyApp et deux enfants étiquetés MyButton. MyApp contient une valeur de compteur égale à zéro qui est transmise aux deux composants MyButton, qui affichent également la valeur zéro.

Initialement, l'étatMyAppdecountest0et est transmis aux deux composants enfants.

Le même diagramme que le précédent, avec le compteur du composant parent MyApp mis en surbrillance, indiquant un clic avec la valeur incrémentée à un. Le flux vers les deux composants enfants MyButton est également mis en surbrillance, et la valeur du compteur dans chaque enfant est définie à un, indiquant que la valeur a été transmise.Le même diagramme que le précédent, avec le compteur du composant parent MyApp mis en surbrillance, indiquant un clic avec la valeur incrémentée à un. Le flux vers les deux composants enfants MyButton est également mis en surbrillance, et la valeur du compteur dans chaque enfant est définie à un, indiquant que la valeur a été transmise.

Au clic,MyAppmet à jour son étatcount à 1et le transmet aux deux enfants.

Maintenant, lorsque vous cliquez sur l'un ou l'autre bouton, lecountdansMyAppchangera, ce qui modifiera les deux compteurs dansMyButton. Voici comment vous pouvez exprimer cela en code.

Premièrement,remontez l'étatdeMyButtonversMyApp:

Ensuite,transmettez l'état vers le basdeMyAppà chaqueMyButton, ainsi que le gestionnaire de clic partagé. Vous pouvez transmettre des informations àMyButtonen utilisant les accolades JSX, comme vous l'avez déjà fait avec les balises intégrées telles que<img>:

Les informations que vous transmettez ainsi sont appeléesprops. Maintenant, le composantMyAppcontient l'étatcountet le gestionnaire d'événementshandleClick, et les transmet tous deux comme propsà chacun des boutons.

Enfin, modifiezMyButtonpourlireles props que vous avez transmises depuis son composant parent :

Lorsque vous cliquez sur le bouton, le gestionnaireonClickse déclenche. La proponClickde chaque bouton a été définie sur la fonctionhandleClickà l'intérieur deMyApp, donc le code à l'intérieur s'exécute. Ce code appellesetCount(count + 1), incrémentant la variable d'étatcount. La nouvelle valeur decountest transmise comme prop à chaque bouton, donc ils affichent tous la nouvelle valeur. C'est ce qu'on appelle « remonter l'état ». En remontant l'état, vous l'avez partagé entre les composants.

Prochaines étapes

À présent, vous connaissez les bases de l'écriture de code React !

Consultez leTutorielpour les mettre en pratique et construire votre première mini-application avec React.