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.

130,061 views • 2 years ago •via X (Twitter)

11 Comments

George Moller's profile picture
George Moller2 years ago

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

Anthony 🇳🇬🇨🇦's profile picture
Anthony 🇳🇬🇨🇦2 years ago

So you want to use a hook just to render a drop down? It was much simpler the way it was before and arguably easier to maintain Using a footer props (as html) is another solution that will eliminate 4 props. I would also pass in the children as props as well

George Moller's profile picture
George Moller2 years ago

Let's suppose you want to add a link just to one dropdown item (really common use case), you would have to either pass in a renderItem props to the dropdown or have a check inside the dropdown at the item level like && <a href=""... This is just one use case, usually you would have many of these. That doesn't scale. With this pattern you leave the extension/customization to the consumer (App) instead of bloating the Dropdown component.

Michał Janaszek's profile picture
Michał Janaszek2 years ago

When you get the task "use the Dropdown component (no mockups)" in the first implementation everyone knows exactly what the final look should be, in the second version the developer can create a completely different version than the creator of the task imagined.

George Moller's profile picture
George Moller2 years ago

If you don't get mockups/requirements, how would you know if you need to render a footer for example. The same can be said about the first implementation, the developer forgets to add a footer prop and the end result is different.

Shripal Soni's profile picture
Shripal Soni2 years ago

Nice tip to keep component open to extension, George 👍

George Moller's profile picture
George Moller2 years ago

Glad you liked it Shripal did you use/know this pattern in React before? It's quite useful

Atif Riaz's profile picture
Atif Riaz2 years ago

This is an amazing video.. keep them coming

George Moller's profile picture
George Moller2 years ago

Glad you liked it Atif did you know this pattern in React before?

Enrique Moreno's profile picture
Enrique Moreno2 years ago

Not a bad solution. I like it.

George Moller's profile picture
George Moller2 years ago

Glad you liked it Enrique!

Related Videos