React.children.only expected to receive a single react element child.

React.Children.only() Error

The React.Children.only() function is used to ensure that a single child element is passed to a component as the only child. If multiple or no child elements are passed, you’ll receive an error stating “react.children.only expected to receive a single react element child“.

This error commonly occurs when you are working with components that can only have a single child element, such as React.Fragment, React.Portal, or custom components designed to have a single child.

Here’s an example to illustrate this error:

{`import React from 'react';

const MyComponent = ({ children }) => {
  const onlyChild = React.Children.only(children);

  return (
    
{onlyChild}
); }; const App = () => { return (
Child 1
Child 2
// Error: react.children.only expected to receive a single react element child
); }; export default App;`}

In the above example, the MyComponent expects to receive a single child element, but two child elements (<div>Child 1</div> and <div>Child 2</div>) are being passed. React throws an error indicating that only a single child is allowed.

To fix this error, you need to ensure that you pass only one child element to the component. Here’s the corrected version of the example:

{`import React from 'react';

const MyComponent = ({ children }) => {
  const onlyChild = React.Children.only(children);

  return (
    
{onlyChild}
); }; const App = () => { return (
Only Child
); }; export default App;`}

In this updated example, we fixed the error by providing only one child element (<div>Only Child</div>) to the MyComponent component.

Read more

Leave a comment