DEV Community

Cover image for Composition vs Inheritance in React πŸ”»
Ali Samir
Ali Samir

Posted on

Composition vs Inheritance in React πŸ”»

In React, Composition and Inheritance are design patterns that help organize and structure your code, but React favors Composition over Inheritance for building reusable components.


πŸ“Œ Composition

Composition allows you to build complex UI components by combining simpler ones.

Instead of creating large components that handle multiple concerns, you can break down your UI into smaller, reusable pieces and compose them together.

⚑️ How it works:

  • React components receive children and props as input, allowing you to nest components.

  • Components can wrap, render, or delegate responsibility to child components.

  • It provides flexibility for handling layouts and behavior across different components.

Example:

function Card({ children }) {
  return <div className="card">{children}</div>;
}

function UserProfile() {
  return (
    <Card>
      <h2>User Profile</h2>
      <p>Some user details...</p>
    </Card>
  );
}
Enter fullscreen mode Exit fullscreen mode

Here, the Card component wraps other content passed as children. You can pass any content to it, making the Card reusable.

⚑️ Benefits:

  • Promotes reusability of components.

  • Follows the Single Responsibility Principle, where each component has a focused purpose.

  • Easier to manage and understand when composing different UIs.


πŸ“Œ Inheritance

Inheritance, on the other hand, refers to a class-based object-oriented programming principle in which one class derives properties and methods from another.

However, React doesn't encourage inheritance as a primary way of sharing behavior between components.

Instead, React focuses on composing components rather than creating deep hierarchies.

While you can technically create class components that extend others, it's not the conversational approach in React.

⚑️ Why React avoids Inheritance:

  • It can lead to tight coupling between components, making them harder to maintain.

  • React encourages keeping components small and composable, which is more aligned with Composition.

  • Inheritance often increases complexity and reduces flexibility.


πŸ”» Key Takeaways:

  • Use Composition to share code between components. It provides flexibility and promotes modular design.

  • Avoid Inheritance for sharing logic. React’s component model is better suited to composition.


This is why React's documentation highlights Composition over Inheritance for building reusable, scalable UI components.


Happy Coding!

Top comments (0)