How to return multiple elements in JSX
New Course Coming Soon:
Get Really Good at Git
How to workaround that the limitation that JSX has when having to return multiple elements from a component
When writing JSX in React, there’s one caveat: you must return one parent item. Not more than one.
For example, this is not possible:
const Pets = () => {
return (
<Dog />
<Cat />
)
}
One “classic” way to solve this is to wrap components and other HTML elements in a div
:
const Pets = () => {
return (
<div>
<Dog />
<Cat />
</div>
)
}
However this introduces a problem - there’s an HTML element that was introduced just to make our JSX work, not necessary in the resulting HTML, but that’s where it ends into.
One solution is to to return an array of JSX elements:
const Pets = () => {
return [
<Dog />,
<Cat />
]
}
Another solution is to use Fragment, a relatively new React feature that solves the problem for us:
const Pets = () => {
return (
<Fragment>
<Dog />
<Cat />
</Fragment>
)
}
it works like the div
element we added before, but it’s not going to appear in the resulting HTML rendered to the browser. Win-win.
Here is how can I help you:
- COURSES where I teach everything I know
- THE VALLEY OF CODE your web development manual
- BOOTCAMP 2024 cohort in progress, next edition in 2025
- BOOKS 16 coding ebooks you can download for free on JS Python C PHP and lots more
- SOLO LAB everything I know about running a lifestyle business as a solopreneur
- Interesting links collection
- Follow me on X