JavaScript
1500
Advanced React Patterns: Compound Components
A
Administrator
December 1, 2025
What are Compound Components?
Compound components is a pattern where multiple components work together to form a complete UI element, giving users more control over rendering.
Basic Example: Tabs Component
import { createContext, useContext, useState } from 'react';
const TabsContext = createContext();
function Tabs({ children, defaultTab }) {
const [activeTab, setActiveTab] = useState(defaultTab);
return (
<TabsContext.Provider value={{ activeTab, setActiveTab }}>
<div className="tabs">{children}</div>
</TabsContext.Provider>
);
}
function TabList({ children }) {
return <div className="tab-list">{children}</div>;
}
function Tab({ id, children }) {
const { activeTab, setActiveTab } = useContext(TabsContext);
return (
<button
className={activeTab === id ? 'active' : ''}
onClick={() => setActiveTab(id)}
>
{children}
</button>
);
}
function TabPanel({ id, children }) {
const { activeTab } = useContext(TabsContext);
return activeTab === id ? <div>{children}</div> : null;
}
Tabs.List = TabList;
Tabs.Tab = Tab;
Tabs.Panel = TabPanel;
export default Tabs;
Usage
function App() {
return (
<Tabs defaultTab="home">
<Tabs.List>
<Tabs.Tab id="home">Home</Tabs.Tab>
<Tabs.Tab id="profile">Profile</Tabs.Tab>
<Tabs.Tab id="settings">Settings</Tabs.Tab>
</Tabs.List>
<Tabs.Panel id="home">
<h2>Home Content</h2>
</Tabs.Panel>
<Tabs.Panel id="profile">
<h2>Profile Content</h2>
</Tabs.Panel>
<Tabs.Panel id="settings">
<h2>Settings Content</h2>
</Tabs.Panel>
</Tabs>
);
}
Benefits
- Flexible API that's easy to understand
- Separation of concerns
- Reduced prop drilling
- Better component composition
Conclusion
The compound component pattern creates flexible, reusable components with intuitive APIs. It's perfect for building UI libraries and design systems.
Comments (1)
A
Ali khan
5 days agoH
A
About Administrator
Default admin user