Discover how building UI like Lego blocks saves you hours of tedious work!
Why Component composition in React? - Purpose & Use Cases
Imagine building a webpage where you have to manually copy and paste the same header, footer, and button code into every page. Every time you want to change the button style, you have to find and update it everywhere.
Manually repeating code is slow and risky. If you miss one spot, your site looks inconsistent. It's like trying to fix every light bulb in a big house one by one instead of changing the whole fixture.
Component composition lets you build small pieces (components) and combine them like building blocks. Change one piece, and all places using it update automatically. It's like having reusable Lego blocks for your UI.
function Page() {
return <div><header>My Site</header><button>Click me</button><footer>© 2024</footer></div>;
}function Header() { return <header>My Site</header>; }
function Footer() { return <footer>© 2024</footer>; }
function Button() { return <button>Click me</button>; }
function Page() {
return <div><Header /><Button /><Footer /></div>;
}It enables building complex interfaces easily by combining simple, reusable parts that work together smoothly.
Think of a social media app where the same profile card component appears in many places. With composition, updating the card's look once updates it everywhere instantly.
Manual repetition causes errors and wastes time.
Component composition builds UI from reusable pieces.
It makes updates easy and keeps interfaces consistent.
Practice
Solution
Step 1: Understand component composition
Component composition means creating complex UI by combining smaller, reusable components.Step 2: Compare options
Only To build UI by combining smaller components correctly describes this purpose. Others are incorrect or unrelated.Final Answer:
To build UI by combining smaller components -> Option DQuick Check:
Component composition = combining smaller components [OK]
- Thinking composition means one big component
- Confusing composition with performance optimization
- Ignoring the use of smaller components
Solution
Step 1: Identify correct JSX syntax for children
In React, child components are passed inside the parent tags as JSX elements, like <Parent><Child /></Parent>.Step 2: Evaluate options
<Parent><Child /></Parent> uses correct JSX syntax. Options A, C, and D are invalid or incorrect ways to pass components.Final Answer:
<Parent><Child /></Parent> -> Option CQuick Check:
Children passed as JSX elements = <Parent><Child /></Parent> [OK]
- Passing children as plain text instead of components
- Using curly braces incorrectly around components
- Calling components like functions inside JSX
function Wrapper({ children }) {
return <div className="wrapper">{children}</div>;
}
function App() {
return (
<Wrapper>
<p>Hello</p>
<p>World</p>
</Wrapper>
);
}Solution
Step 1: Understand Wrapper component
Wrapper returns a div with class "wrapper" that renders its children inside.Step 2: Check children passed to Wrapper
App passes two <p> elements as children, so both appear inside the div.Final Answer:
<div class="wrapper"><p>Hello</p><p>World</p></div> -> Option AQuick Check:
Children rendered inside wrapper div = <div class="wrapper"><p>Hello</p><p>World</p></div> [OK]
- Thinking children must be a single element
- Expecting children to concatenate as text
- Ignoring the wrapper div output
function Container(props) {
return <div>{props.children}</div>;
}
function App() {
return (
<Container>
<h1>Title</h1>
<h2>Subtitle</h2>
</Container>
);
}
// Usage
ReactDOM.render(<App />, document.getElementById('root'));Solution
Step 1: Review Container component
Container returns a div wrapping props.children, which can be multiple elements.Step 2: Check usage in App
App passes two headings as children, which is valid JSX inside a div.Final Answer:
No error; this is valid composition -> Option AQuick Check:
Multiple children inside a div is valid JSX [OK]
- Thinking multiple children need a fragment wrapper
- Confusing React rules about keys with composition errors
- Assuming props.children must be a single element
Card component that accepts a header and footer as props and displays children content in the middle. Which is the best way to compose this component?Solution
Step 1: Understand Card component needs
Card should render header, children content, and footer separately for reuse and clarity.Step 2: Evaluate composition options
Use props.header and props.footer to render header and footer, and props.children for content inside a container div correctly uses props.header and props.footer for fixed parts and props.children for flexible content.Final Answer:
Use props.header and props.footer to render header and footer, and props.children for content inside a container div -> Option BQuick Check:
Separate header/footer props + children content = Use props.header and props.footer to render header and footer, and props.children for content inside a container div [OK]
- Passing header/footer as children causing confusion
- Ignoring children prop for main content
- Mixing content and layout in children prop
Ready to prove it?
Pass the test and this pattern moves unknown
