Section courante

A propos

Section administrative du site

Fragment

Fragment
React

<Fragment>, souvent utilisé via la syntaxe <>...</>, vous permet de regrouper des éléments sans noeud envelopper.

<>
  <OneChild />
  <AnotherChild />
</>

Référence

<Fragment>

Enveloppez les éléments dans <Fragment> pour les regrouper lorsqu'un seul élément est nécessaire. Regrouper des éléments dans Fragment n'a aucun effet sur le DOM résultant ; c'est comme si les éléments n'étaient pas groupés. La balise JSX vide <></> est généralement l'abréviation de <Fragment></Fragment>.

Propriétés

Avertissements

Si vous souhaitez transmettre une clef à un fragment, vous ne pouvez pas utiliser la syntaxe <>...</>. Vous devez importer explicitement le fragment depuis «react» et afficher <Fragment key={yourKey}>...</Fragment>.

React ne réinitialise pas l'état lorsque vous passez du rendu <><Child /></> à [<Child />] et inversement, ou lorsque vous passez du rendu <><Child /></> à <Child /> et inversement. Cela ne fonctionne qu'à un seul niveau : par exemple, passer de <><><Child /></></> à <Child /> réinitialise l'état. Voir la sémantique précise ici.

Utilisation

Renvoyer plusieurs éléments

Utilisez Fragment, ou la syntaxe équivalente <>...</>, pour regrouper plusieurs éléments. Vous pouvez l'utiliser pour placer plusieurs éléments à l'emplacement où un seul élément peut être placé. Par exemple, une composante ne peut renvoyer qu'un seul élément, mais en utilisant Fragment, vous pouvez regrouper plusieurs éléments et les renvoyer ensemble :

  1. function Post() {
  2.   return (
  3.     <>
  4.       <PostTitle />
  5.       <PostBody />
  6.     </>
  7.   );
  8. }

Les fragments sont utiles car regrouper des éléments avec un fragment n'a aucun effet sur la mise en page ni sur les styles, contrairement à un élément DOM encapsulé. Si vous examinez cet exemple avec les outils du navigateur, vous constaterez que tous les noeuds DOM <h1> et <article> apparaissent comme des frères, sans encapsulation :

  1. export default function Blog() {
  2.   return (
  3.     <>
  4.       <Post title="An update" body="Cela fait longtemps que je n'ai pas posté..." />
  5.       <Post title="Mon nouveau blog" body="Je commence un nouveau blog !" />
  6.     </>
  7.   )
  8. }
  9.  
  10. function Post({ title, body }) {
  11.   return (
  12.     <>
  13.       <PostTitle title={title} />
  14.       <PostBody body={body} />
  15.     </>
  16.   );
  17. }
  18.  
  19. function PostTitle({ title }) {
  20.   return <h1>{title}</h1>
  21. }
  22.  
  23. function PostBody({ body }) {
  24.   return (
  25.     <article>
  26.       <p>{body}</p>
  27.     </article>
  28.   );
  29. }


Dernière mise à jour : Mercredi, le 10 septembre 2025