In Dynamically Add Props To A Child Component, I talked about how a child element can be reconstituted with additional props. The approach I showed will only work in the case of a single child being nested in that component. What if you want your component to account for one, many, or even children?
React comes with a built-in function for mapping that handles these cases.
const ParentWithClick = ({ children }) => {
return (
<React.Fragment>
{React.Children.map(children || null, (child, i) => {
return <child.type {...child.props} key={i} onClick={handleClick} />;
})}
</React.Fragment>
);
};
The React.Children.map
function allows
mapping over one or many elements and if children
is null
or
undefined
, it will return null
or undefined
respectively.
See a live example here.