Bird
Raised Fist0
Reactframework~8 mins

useState hook introduction in React - Performance & Optimization

Choose your learning style10 modes available
Performance: useState hook introduction
MEDIUM IMPACT
This affects interaction responsiveness and rendering speed when updating component state.
Updating component state on user input
React
const [count, setCount] = useState(0);

function handleClick() {
  setCount(prev => prev + 2);
}
Single state update with functional form batches changes into one render.
📈 Performance GainTriggers 1 render, reducing rendering time by half.
Updating component state on user input
React
const [count, setCount] = useState(0);

function handleClick() {
  setTimeout(() => {
    setCount(count + 1);
  }, 0);
  setTimeout(() => {
    setCount(count + 2);
  }, 0);
}
Multiple state updates scheduled asynchronously cause multiple renders, slowing interaction.
📉 Performance CostTriggers 2 renders instead of 1, doubling rendering work.
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Multiple setState calls separatelyMultiple updatesMultiple reflowsMultiple paints[X] Bad
Single functional setState callSingle updateSingle reflowSingle paint[OK] Good
Rendering Pipeline
When useState updates, React schedules a re-render of the component. The browser recalculates styles, layout, and paints the updated UI.
→JavaScript Execution
→Style Calculation
→Layout
→Paint
→Composite
⚠️ BottleneckLayout and Paint stages are most expensive when many components re-render.
Core Web Vital Affected
INP
This affects interaction responsiveness and rendering speed when updating component state.
Optimization Tips
1Batch state updates using functional setState to reduce renders.
2Avoid updating state unnecessarily to keep UI responsive.
3Use React DevTools Profiler to identify excessive renders.
Performance Quiz - 3 Questions
Test your performance knowledge
What happens if you call setState multiple times in a row with non-functional updates?
AEach call triggers a separate render, slowing UI responsiveness.
BReact batches them automatically into one render always.
CNo renders happen until the component unmounts.
DThe state updates are ignored except the last one.
DevTools: React DevTools and Chrome Performance panel
How to check: Use React DevTools Profiler to record interactions and see how many renders occur per state update. Use Chrome Performance to check layout and paint times.
What to look for: Look for multiple renders triggered by one user action and long layout or paint durations indicating inefficient updates.

Practice

(1/5)
1. What does the useState hook do in a React component?
easy
A. It fetches data from an external API automatically.
B. It allows the component to remember and update data over time.
C. It styles the component with CSS.
D. It handles routing between pages.

Solution

  1. Step 1: Understand the purpose of useState

    The useState hook is designed to let a React component keep track of data that can change.
  2. Step 2: Identify what useState does

    It returns the current value and a function to update that value, enabling the component to remember and update data.
  3. Final Answer:

    It allows the component to remember and update data over time. -> Option B
  4. Quick Check:

    useState manages component data = A [OK]
Hint: useState is for storing and changing data inside components [OK]
Common Mistakes:
  • Thinking useState fetches data from APIs
  • Confusing useState with styling or routing
  • Believing useState automatically updates the UI without calling the setter
2. Which of the following is the correct syntax to declare a state variable count with initial value 0 using useState?
easy
A. const [count, setCount] = useState(0);
B. const count = useState(0);
C. const count, setCount = useState(0);
D. const [count, setCount] = useState;

Solution

  1. Step 1: Recall useState syntax

    The useState hook returns an array with two elements: the current state and a function to update it, so destructuring with square brackets is needed.
  2. Step 2: Check each option

    const [count, setCount] = useState(0); correctly uses array destructuring and calls useState with initial value 0. Others either miss destructuring or call useState incorrectly.
  3. Final Answer:

    const [count, setCount] = useState(0); -> Option A
  4. Quick Check:

    useState returns [value, setter] = C [OK]
Hint: useState returns [value, setter] array, use destructuring [OK]
Common Mistakes:
  • Not using array destructuring
  • Forgetting to call useState as a function
  • Assigning useState to multiple variables without brackets
3. What will be displayed on the screen after clicking the button twice in this component?
import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);
  return (
    

Count: {count}

setCount(count + 1)}>Increment
); }
medium
A. Count: 0
B. Count: 1
C. Count: undefined
D. Count: 2

Solution

  1. Step 1: Understand initial state and button action

    The initial count is 0. Each button click calls setCount(count + 1), increasing count by 1.
  2. Step 2: Calculate count after two clicks

    After first click, count becomes 1. After second click, count becomes 2.
  3. Final Answer:

    Count: 2 -> Option D
  4. Quick Check:

    Two increments from 0 = 2 [OK]
Hint: Each click adds 1 to count starting from 0 [OK]
Common Mistakes:
  • Thinking count resets on each click
  • Confusing initial value with updated value
  • Ignoring that setCount updates state asynchronously
4. Identify the error in this React component using useState:
import React, { useState } from 'react';

function Example() {
  const [value, setValue] = useState;
  return (
    

{value}

setValue('Hello')}>Set
); }
medium
A. State variable value is not declared.
B. The setter function setValue is missing.
C. useState is not called as a function.
D. The button's onClick handler is invalid.

Solution

  1. Step 1: Check useState usage

    The code assigns useState without parentheses, so it is not called as a function, which is required.
  2. Step 2: Understand consequences

    Without calling useState(), value and setValue are undefined, causing errors.
  3. Final Answer:

    useState is not called as a function. -> Option C
  4. Quick Check:

    useState must be called with () = B [OK]
Hint: Always call useState with parentheses: useState() [OK]
Common Mistakes:
  • Forgetting parentheses after useState
  • Assuming useState is a variable, not a function
  • Misreading error as button or variable issue
5. You want to create a toggle button that switches text between "ON" and "OFF" using useState. Which code correctly implements this behavior?
hard
A. const [isOn, setIsOn] = useState(false); setIsOn(!isOn)}>{isOn ? 'ON' : 'OFF'}
B. const [isOn, setIsOn] = useState('OFF'); setIsOn('ON')}>{isOn}
C. const [isOn, setIsOn] = useState(true); setIsOn(true)}>{isOn ? 'ON' : 'OFF'}
D. const isOn = false; isOn = !isOn}>{isOn ? 'ON' : 'OFF'}

Solution

  1. Step 1: Understand toggle logic with useState

    To toggle, state must be boolean and updated to its opposite on click.
  2. Step 2: Evaluate each option

    const [isOn, setIsOn] = useState(false); setIsOn(!isOn)}>{isOn ? 'ON' : 'OFF'} initializes state as false and toggles it with !isOn, displaying 'ON' or 'OFF' accordingly. Others either don't toggle or misuse state.
  3. Final Answer:

    const [isOn, setIsOn] = useState(false); setIsOn(!isOn)}>{isOn ? 'ON' : 'OFF'} -> Option A
  4. Quick Check:

    Toggle state by flipping boolean = A [OK]
Hint: Toggle boolean state by setting it to !currentValue [OK]
Common Mistakes:
  • Using string state without toggling
  • Setting state to same value repeatedly
  • Trying to mutate state variable directly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard