Functional vs. Class Components in React

React components are the building blocks of any React application. There are two main types: Functional Components and Class Components. Understanding the differences between them is key to writing modern, efficient React applications.


What are Functional Components?

Functional components are JavaScript functions that return JSX. They are simpler, easier to read, and preferred in modern React development.

✅ Key Features:

  • Simpler syntax – Just a function returning JSX.
  • Hooks support – Can use useState, useEffect, etc.
  • Better performance – No overhead from class instantiation.

Example of a Functional Component

import { useState } from "react";

function Counter() {
  const [count, setCount] = useState(0);
  return (
    <div>
      <p>{count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

What are Class Components?

Class components are ES6 classes that extend React.Component. Before hooks were introduced, they were the primary way to manage state and lifecycle methods.

⚠️ Key Features:

  • Uses this.state and this.setState for state management.
  • Lifecycle methods like componentDidMount and componentDidUpdate.
  • More boilerplate compared to functional components.

Example of a Class Component

import React, { Component } from "react";

class Counter extends Component {
  constructor(props) {
    super(props);
    this.state = { count: 0 };
  }

  increment = () => {
    this.setState({ count: this.state.count + 1 });
  };

  render() {
    return (
      <div>
        <p>{this.state.count}</p>
        <button onClick={this.increment}>Increment</button>
      </div>
    );
  }
}

Functional vs. Class Components: Key Differences

FeatureFunctional ComponentsClass Components
SyntaxSimple functionES6 class
State ManagementuseState Hookthis.state & setState
Lifecycle MethodsuseEffect HookcomponentDidMount, etc.
PerformanceMore efficientSlightly slower due to class overhead
Code ComplexityLess boilerplateMore setup required

Why Functional Components Are Preferred

Modern React development favors functional components because they:

Require less code

Improve performance

Support hooks for better state management

Are easier to read and test

With the introduction of React Hooks (React 16.8), almost everything class components could do is now possible in functional components—making class components largely obsolete for new projects.


Summary

  • Functional components are the modern, recommended way to write React components.
  • Class components were used before hooks but are now less common.
  • Hooks like useState and useEffect make functional components powerful and easy to use.

References

  1. React Official Docs – Components
  2. Understanding React Functional Components
  3. Class Components vs. Functional Components