2018-10-12 15:37:13 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								title: Fragments
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								---
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Fragments
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-10-21 10:29:42 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Fragments are a way to return multiple elements from the render method without using an additional wrapping DOM element.
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 15:37:13 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-10-21 10:29:42 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								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` .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-18 18:47:53 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								In the past, a frequent solution was to use either a wrapping `div`  or `span`  element, which was not elegant as it would increase the size of DOM tree and this is because of the way JSX works as multiple elements should be wrapped in a div. However, version 16.0 of React introduced the addition of `Fragment` , which makes this no longer necessary.
							 
						 
					
						
							
								
									
										
										
										
											2018-10-21 10:29:42 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-18 18:47:53 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								`Fragment`  acts as a wrapper without adding unnecessary `div`  or `span`  elements to the DOM.  You can use it directly from the React import: 
						 
					
						
							
								
									
										
										
										
											2018-10-12 15:37:13 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```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;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-10-21 10:29:42 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								`Fragments`  only accept the key attribute. 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Or you can additionally deconstruct it for use:
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 15:37:13 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								```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;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-10-21 10:29:42 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								React version 16.2 simplified this process further, allowing for empty JSX tags `<></>`  to be interpreted as Fragments:
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 15:37:13 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```jsx
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								return (
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < >
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < div > I am an element!< / div > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    < button > I am another element< / button > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  < />
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-01-18 18:47:53 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Empty JSX tags cannot be used with any attributes (including key).
							 
						 
					
						
							
								
									
										
										
										
											2018-10-21 10:29:42 -07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-10-12 15:37:13 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								#### 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 )