MOCKSTACKS
EN
Questions And Answers

More Tutorials









Props.children and component composition


The "child" components of a component are available on a special prop, props.children. This prop is very useful for "Compositing" components together, and can make JSX markup more intuitive or reflective of the intended final structure of the DOM:

var SomeComponent = function () {
 return (
 <article className="textBox">
 <header>{this.props.heading}</header>
 <div className="paragraphs">
 {this.props.children}
 </div>
 </article>
 );
}

Which allows us to include an arbitrary number of sub-elements when using the component later:

var ParentComponent = function () {
 return (
 <SomeComponent heading="Amazing Article Box" >
 <p className="first"> Lots of content </p>
 <p> Or not </p>
 </SomeComponent>
 );
}

Props.children can also be manipulated by the component. Because props.children may or may not be an array, React provides utility functions for them as React.Children. Consider in the previous example if we had wanted to wrap each paragraph in its own
element:

var SomeComponent = function () {
 return (
 <article className="textBox">
 <header>{this.props.heading}</header>
 <div className="paragraphs">
{React.Children.map(this.props.children, function (child) {
 return (
 <section className={child.props.className}>
 React.cloneElement(child)
 </section>
 );
 })}
 </div>
 </article>
 );
}

Note the use of React.cloneElement to remove the props from the child

tag - because props are immutable, these values cannot be changed directly. Instead, a clone without these props must be used.

Additionally, when adding elements in loops, be aware of how React reconciles children during a rerender, and strongly consider including a globally unique key prop on child elements added in a loop


Conclusion

In this page (written and validated by ) you learned about React Props children and component composition . What's Next? If you are interested in completing React tutorial, your next topic will be learning about: React Detecting the type of Children components.



Incorrect info or code snippet? We take very seriously the accuracy of the information provided on our website. We also make sure to test all snippets and examples provided for each section. If you find any incorrect information, please send us an email about the issue: mockstacks@gmail.com.


Share On:


Mockstacks was launched to help beginners learn programming languages; the site is optimized with no Ads as, Ads might slow down the performance. We also don't track any personal information; we also don't collect any kind of data unless the user provided us a corrected information. Almost all examples have been tested. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. By using Mockstacks.com, you agree to have read and accepted our terms of use, cookies and privacy policy.