bugl
bugl
HomeLearnPatternsPathsSearchPremium
HomeLearnPatternsPaths
Learn/React/React Core
React•React Core

React Higher Order Components

What is a Higher Order Component?

A Higher Order Component (HOC) is like a wrapper that adds extra features to your React components. Think of it like putting a case on your phone - the case adds new features (like water protection) without changing the phone itself.

Note

HOCs are functions that take a component and return an enhanced version of that component.

Example: Adding a Border

To demonstrate how HOCs work, let's create a simple example - adding a border to any component:

Example

Create a function that adds a border around whatever component you pass to it:

// This is our HOC - it adds a border to any component function withBorder(WrappedComponent) {
return function NewComponent(props) {
 return ( <div style={{ border: '2px solid blue', padding: '10px' }}> <WrappedComponent {...props} /> </div> );
};
}
// Simple component without border function Greeting({ name }) {
return <h1>Hello, {name}!</h1>;
}
// Create a new component with border
const GreetingWithBorder = withBorder(Greeting);
function App() {
 return ( <div> <Greeting name="John" /> <GreetingWithBorder name="Jane" /> </div> );
}

In this example

  • withBorder is our HOC - it's a function that takes a component
  • It returns a new component that wraps the original in a div with a border
  • The original component ( Greeting ) remains unchanged
  • We can still use both the original and enhanced versions

Note

Often, HOC's can be replaced with React Hooks, but HOC's are still useful for certain cross-cutting concerns like authentication or data fetching patterns.

Previous

React forwardRef

Next

React Sass Styling

This chapter

Overview
45

Lessons

142m

Read time

1. React Tutorial2. React Introduction3. React Getting Started4. Your First React App5. React Render HTML6. Upgrade React7. React ES68. React ES6 Classes9. React ES6 Arrow Functions10. React ES6 Variables11. JavaScript Array map()12. React ES6 Destructuring13. React ES6 Spread Operator14. React ES6 Modules15. React ES6 Ternary Operator16. React ES6 Template Strings17. React JSX18. React JSX Expressions19. React JSX Attributes20. React JSX If Statements21. React Components22. React Class Components23. React Props24. React Destructuring Props25. React Props Children26. React Events27. React Conditional Rendering28. React Lists29. React Forms30. React Submit Forms31. React Forms - Textarea32. React Forms - Select33. React Forms - Multiple Input Fields34. React Forms - Checkbox35. React Forms - Radio36. React Portals37. React Suspense38. Styling React Using CSS39. React CSS Modules40. React CSS-in-JS41. React Router42. React Transitions43. React forwardRef44. React Higher Order Components45. React Sass Styling

On this page

What is a Higher Order Component?Example: Adding a Border