Loading video...

Video Failed to Load

Go Home

❌ Avoid having components with too many props. ✅ Instead use the compound components pattern in React to embrace composition.

177,627 views • 1 year ago •via X (Twitter)

10 Comments

George Moller's profile picture
George Moller1 year ago

I've been working professionally with React for more than 8 years and I compiled all my knowledge into 100+ infographics and 70+ video tutorials just like this one. Check them out ↓

wlepinski's profile picture
wlepinski1 year ago

This is a really bad example of composition. You kind of allow the user to make a mistake like adding the icon in between the other components. If you want something similar you have to use renderProps.

George Moller's profile picture
George Moller1 year ago

I call that flexibility

tslamoon's profile picture
tslamoon1 year ago

Meh. Yes use composition but this example Implementation isn’t that much better. It’s why we don’t have div and div.p and div.h1

React Nuclear's profile picture
React Nuclear1 year ago

This allows too much configurability. It’s better to use the interface of the component to guarantee the user won’t abuse how the component works internally. (“children: ReactNode” is basically an any)

Qui soc's profile picture
Qui soc1 year ago

Bad example of composition tbh

Snehil Kumar's profile picture
Snehil Kumar1 year ago

Composition is good for an unopinionated component library where expectation is that devs will add custom styles. But it's a no-go for a product/brand's design system because they have rules set in stone for the sake of consistency Eg: "alert icon will always be on the top-left"

Stephen Rayner's profile picture
Stephen Rayner1 year ago

Isn’t exporting as sub elements on the parent bad practice? Due to tree shaking limitations?

huda's profile picture
huda1 year ago

For me this does not make sense as I would have to change all the Alerts in my codebase if I want to change the Alert itself. If I wrap this in it's own component, I would have to pass all the props to the wrapper component.

Ndeye Fatou Diop 🚢 💻 | DEV | 🇸🇳🇫🇷's profile picture
Ndeye Fatou Diop 🚢 💻 | DEV | 🇸🇳🇫🇷1 year ago

Love using this tip especially for the performance benefits

Related Videos