This blog post is archived. It's no longer maintained and may contain outdated information.

๐Ÿ’ฏ UPDATED: Advanced React Component Patterns โš›๏ธ

June 1st, 2018 โ€” 4 min read

Advanced React Component Patterns with Kent C. Dodds (art by Maggie Appleton)
Advanced React Component Patterns with Kent C. Dodds (art by Maggie Appleton)
No translations available.Add translation

TL;DR

My highly popular course has been updated (completely re-recorded) and you can find it here:

๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡

kcd.im/advanced-react

๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†

Here's the intro:

ALSO! You can follow along in codesandbox right here:

So what'sย new?

This course was originally published in December 2017. A few months after it was published, React 16.3.0 was released with some new APIs that really improved the usability of React for some of these patterns.

Compound Components + Context API =ย โค๏ธ

In particular, the Context API makes compound components much easier to make more flexible:

Make Compound React Components Flexible

I also have a few extra lessons to show you how you can validate that your Context Consumers are used properly:

Validate Compound Component Context Consumers

And here's another that shows you how to properly use the Context Provider to avoid unnecessary re-renders of your consumers:

Prevent Unnecessary Rerenders of Compound Components using React Context

Render Props

The render prop lessons have also been re-recorded, though no new React APIs were needed to make it remain an awesome pattern ๐Ÿ˜‰ People have told me that they really appreciate the way I teach render props:

Use Render Props with React

We also still have the prop collections and prop getters patterns because those are still very awesome.

State Reducers

We have a few lessons that feature a completely new pattern that wasn't in the original course that I implemented a while ago in downshift called the state reducer pattern:

Implement Component State Reducers

Improve the usability of Component State Reducers with state change types

Control Props

In the last course we had control props, but I've taken it further in this update to have more lessons about this subject and simplified the examples while making the implementation more real-world as well so you can focus on learning how to effectively use the pattern:

Make Controlled React Components with Control Props

Support Control Props for all state

Support a state change handler for all control props

Improve the usability of Control Props with state change types

The Providerย Pattern

Last time, we had quite a few lessons about the provider pattern. With the new Context API, I was able to show everything in a single lesson because the Context API is a built-in implementation of the provider pattern! In this lesson I give a demonstration of what Prop Drilling is and how the Provider Pattern can simplify things considerably making your React codebase much more manageable.

Implement the Provider Pattern with React Context

Higher Order Components

React 16.3.0 published a new API called React.forwardRef that simplified creating Higher Order Components (HOCs) in a big way. In this lesson you'll learn how to use that effectively. While everyone out there is all hyped up on render props (your's truly included), higher components do still have a place and value in the discussion of react patterns. This lesson is built on top of the provider pattern lesson so you can see how to turn a Context Consumer into a Higher Order Component.

Implement a Higher Order Component

Now go watchย it!

Thanks so much for all the support with all this content. This time around it's 20 minutes shorter than last time (despite having a few extra lessons for an entirely new pattern) because React keeps getting better at enabling these patterns. I hope you love it!

๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡

kcd.im/advanced-react

๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†๐Ÿ‘†

Please share this blog post and the course link with your friends!

Epic React

Get Really Good at React

Illustration of a Rocket
Kent C. Dodds
Written by Kent C. Dodds

Kent C. Dodds is a JavaScript software engineer and teacher. Kent's taught hundreds of thousands of people how to make the world a better place with quality software development tools and practices. He lives with his wife and four kids in Utah.

Learn more about Kent

Want to learn more?

Join Kent in a live workshop

If you found this article helpful.

You will love these ones as well.