Managing State with setState in React

Expert-Level Explanation

setStateis a function used in class components in React for updating the component's state. When the state changes, the component responds by re-rendering. setState is asynchronous, meaning React batches multiple setState calls for performance optimisations. It takes an object or a function as an argument; the object updates the specified state properties, and the function allows for more complex state updates based on the previous state. Using setState correctly is crucial for ensuring that components update predictably and efficiently.

Creative Explanation

Think of setState as a control panel for a robot (the component). Each button or dial on the control panel changes a specific aspect of the robot's behaviour or appearance. When you adjust these controls (call setState), you don't see the changes instantly; instead, the robot's internal system processes these changes efficiently before displaying them. This process ensures that the robot operates smoothly and responds appropriately to the adjustments made.

Practical Explanation with Code

Here's a basic example of using setState in a class component:

import React, { Component } from 'react';

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

  incrementCount = () => {
    this.setState(prevState => ({
      count: prevState.count + 1

  render() {
    return (
        <p>Count: {this.state.count}</p>
        <button onClick={this.incrementCount}>Increment</button>

export default Counter;

In this Counter component, setState is used to update the count state. TheincrementCount method modifies the state based on the previous state.

Real-World Example

On a social media platform, consider a "like" button associated with a post. Each time a user clicks the button, the like count is updated. This is managed by a component that uses setState to increment the count in its state. Despite multiple users potentially liking the post at the same time, the component efficiently updates and displays the new count.

Did you find this article valuable?

Support Akash Thoriya by becoming a sponsor. Any amount is appreciated!