The React.Fragment component, which can be used with a special <></> syntax, lets you use multiple elements in place of one, without wrapping them in any other container element:

function Component() {
  return (
    <>
      <OneChild />
      <AnotherChild />
    </>
  );
}

Fragment is useful because grouping elements with Fragment has no effect on layout or styles, unlike if you wrapped the elements in some other container such as a DOM element.


Usage

Returning multiple elements

Use Fragment to group multiple elements together. You can use it to put multiple elements in any place where a single element can go. For example, a component can only return one element, but by using Fragment you can group multiple elements together and then return them as a group:

function Notification() {
  return (
    <>
      <NotificationTitle />
      <NotificationBody />
    </>
  );
}

You usually use Fragment with a special syntax, the empty JSX tag <></>, that is equivalent to writing <React.Fragment></React.Fragment>.

Assigning multiple elements to a variable

Like any other element, you can assign Fragment elements to variables, pass them as props, and so on:

function CloseDialog() {
  const buttons = (
    <>
      <OKButton />
      <CancelButton />
    </>
  );
  return (
    <AlertDialog buttons={buttons}>
      Are you sure you want to leave this page?
    </AlertDialog>
  );
}

Grouping elements with text

You can use Fragment to group text together with components:

function DateRangePicker({start, end}) {
  return (
    <>
      From
      <DatePicker date={start} />
      to
      <DatePicker date={end} />
    </>
  );
}

Rendering a list of Fragments

Here’s a situation where you need to write React.Fragment explicitly instead of using the <></> syntax: When you render multiple elements in a loop, you need to assign a key to each element. If the elements within the loop are Fragments, you need to use the normal JSX element syntax in order to provide the key attribute:

function BlogPosts(posts) {
  return posts.map(() =>
    <React.Fragment key={post.id}>
      <Heading>{post.title}</Heading>
      <BlogPostBody post={post} />
    </React.Fragment>
  );
}

Reference

React.Fragment

Wrap elements in <React.Fragment> to group them together in situations where you need a single element. Grouping elements in Fragment has no effect on the resulting DOM; it is the same as if the elements were not grouped. The empty JSX tag <></> is shorthand for <React.Fragment></React.Fragment> in most cases.

Props

  • optional key: Fragments declared with the explicit <React.Fragment> syntax may have keys.