Home   reactjs  

useState hook is executed every time when component is rendered?

In React, the useState hook is executed only once when the component is initially rendered. However, the state variable it manages is maintained across re-renders. Here's a detailed explanation:

Initial Execution

When a component first renders, the useState hook initializes the state variable with the provided initial value. The state variable and a corresponding setter function are returned.

Subsequent Renders

On subsequent renders, the useState hook does not reinitialize the state variable. Instead, it returns the current state value and the setter function that were created during the initial render. This behavior ensures that state is preserved across renders.

Example

Let's consider an example to illustrate this behavior:

import React, { useState } from 'react';

const Counter = () => {
  const [count, setCount] = useState(() => {
    console.log('Initializing state');
    return 0; // Initial state value
  });

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
};

export default Counter;

Explanation

  1. Initial Render:

    • When the Counter component is rendered for the first time, the useState hook initializes the count state to 0.
    • The initializer function (passed as a function to useState) logs "Initializing state" to the console. This log statement is executed only once.
    • The initial state value 0 is set to count.
  2. Subsequent Renders:

    • When the user clicks the "Increment" button, the setCount function is called, updating the count state.
    • The component re-renders with the new state value, but the useState hook does not reinitialize count. Instead, it returns the current state value and the setter function.
    • The initializer function is not called again, so "Initializing state" is not logged again.
Published on: Jul 05, 2024, 05:49 AM  
 

Comments

Add your comment