How to pass props to {this.props.children} in React?

Passing props to {this.props.children} in React involves using the React.cloneElement() function to clone each child element and add additional props to them.

Here’s how we can do it:

import React from 'react';

class ParentComponent extends React.Component {
  render() {
    // Additional props to be passed to children
    const additionalProps = {
      additionalProp1: 'value1',
      additionalProp2: 'value2'
    };

    // Clone children and add additional props
    const childrenWithProps = React.Children.map(this.props.children, child => {
      return React.cloneElement(child, additionalProps);
    });

    return (
      <div>
        <h1>Parent Component</h1>
        {/* Render children with additional props */}
        {childrenWithProps}
      </div>
    );
  }
}

class ChildComponent extends React.Component {
  render() {
    // Access additional props passed by parent
    const { additionalProp1, additionalProp2 } = this.props;

    return (
      <div>
        <h2>Child Component</h2>
        <p>Additional Prop 1: {additionalProp1}</p>
        <p>Additional Prop 2: {additionalProp2}</p>
      </div>
    );
  }
}


// Usage
class App extends React.Component {
  render() {
    return (
      <ParentComponent>
        {/* Child components */}
        <ChildComponent />
        <ChildComponent />
      </ParentComponent>
    );
  }
}

export default App;

ParentComponent iterates over its children using React.Children.map().

For each child, it uses React.cloneElement() to clone the child and add the additionalProps to it.

The cloned child components (childrenWithProps) are then rendered.

Each ChildComponent receives the additional props (additionalProp1 and additionalProp2) passed down by the ParentComponent.

This approach allows us to pass props to all children rendered within the parent component.