71 lines
1.8 KiB
Markdown
71 lines
1.8 KiB
Markdown
---
|
|
title: Fragments
|
|
---
|
|
|
|
# Fragments
|
|
|
|
Fragments are a way to return multiple elements from the render method without using an additional wrapping DOM element.
|
|
|
|
When attempting to render multiple sibling elements without an enclosing tag in JSX, you will see the error message of `Adjacent JSX elements must be wrapped in an enclosing tag`.
|
|
|
|
In the past, a frequent solution was to use either a wrapping div or span element. However, version 16.0 of React introduced the addition of `Fragment`, which makes this no longer necessary.
|
|
|
|
`Fragment` acts a wrapper without adding unnecessary divs or spans elements to the DOM. You can use it directly from the React import:
|
|
|
|
```jsx
|
|
import React from 'react';
|
|
|
|
class MyComponent extends React.Component {
|
|
render(){
|
|
return (
|
|
<React.Fragment>
|
|
<div>I am an element!</div>
|
|
<button>I am another element</button>
|
|
</React.Fragment>
|
|
);
|
|
}
|
|
}
|
|
|
|
export default MyComponent;
|
|
```
|
|
|
|
|
|
`Fragments` only accept the key attribute.
|
|
|
|
Or you can additionally deconstruct it for use:
|
|
```jsx
|
|
// Deconstructed
|
|
import React, { Component, Fragment } from 'react';
|
|
|
|
class MyComponent extends Component {
|
|
render(){
|
|
return (
|
|
<Fragment>
|
|
<div>I am an element!</div>
|
|
<button>I am another element</button>
|
|
</Fragment>
|
|
);
|
|
}
|
|
}
|
|
|
|
export default MyComponent;
|
|
```
|
|
|
|
|
|
React version 16.2 simplified this process further, allowing for empty JSX tags `<></>` to be interpreted as Fragments:
|
|
|
|
```jsx
|
|
return (
|
|
<>
|
|
<div>I am an element!</div>
|
|
<button>I am another element</button>
|
|
</>
|
|
);
|
|
```
|
|
|
|
Empty JSX tags cannot be used with attributes, including key.
|
|
|
|
#### More Information:
|
|
* [React.Fragment (Official Documentation)](https://reactjs.org/docs/react-api.html#reactfragment)
|
|
* [React v16.2.0: Improved Support for Fragments](https://reactjs.org/blog/2017/11/28/react-v16.2.0-fragment-support.html)
|