Bird
Raised Fist0
Reactframework~5 mins

Multiple state variables in React

Choose your learning style10 modes available
Introduction

Using multiple state variables lets you keep track of different pieces of information separately in your component. This makes your code clearer and easier to manage.

You want to track a user's name and age separately in a form.
You need to toggle a menu open or closed and also count how many times it was opened.
You want to store a list of items and also keep track of which item is selected.
You have a counter and a text input that change independently.
Syntax
React
const [state1, setState1] = useState(initialValue1);
const [state2, setState2] = useState(initialValue2);

Each state variable has its own setter function to update it.

Use separate state variables for unrelated data to keep things simple.

Examples
One state for a number, one for a text string.
React
const [count, setCount] = useState(0);
const [name, setName] = useState('');
One state to track if a menu is open, another to hold a list of items.
React
const [isOpen, setIsOpen] = useState(false);
const [items, setItems] = useState([]);
Sample Program

This component uses two separate state variables: one for a number counter and one for a text input. They update independently when you click the button or type in the input.

React
import React, { useState } from 'react';

export default function MultipleStates() {
  const [count, setCount] = useState(0);
  const [name, setName] = useState('');

  return (
    <main>
      <section>
        <h2>Counter</h2>
        <p>Count: {count}</p>
        <button onClick={() => setCount(count + 1)} aria-label="Increase count">Increase</button>
      </section>
      <section>
        <h2>Name Input</h2>
        <input
          type="text"
          value={name}
          onChange={e => setName(e.target.value)}
          aria-label="Name input"
          placeholder="Enter your name"
        />
        <p>Your name is: {name}</p>
      </section>
    </main>
  );
}
OutputSuccess
Important Notes

Updating one state variable does not affect the others.

Keep state variables focused on one piece of data each for clarity.

Summary

Multiple state variables help manage different data separately.

Each state has its own setter function to update it.

This approach keeps your component organized and easier to understand.

Practice

(1/5)
1. In React, why would you use multiple state variables instead of one single state object?
easy
A. To keep different pieces of data separate and update them independently.
B. Because React only allows one state variable per component.
C. To make the component slower and harder to read.
D. To avoid using setter functions.

Solution

  1. Step 1: Understand state separation

    Multiple state variables let you store different data separately, making updates easier and clearer.
  2. Step 2: Recognize React's flexibility

    React allows many state variables, each with its own setter, improving organization and readability.
  3. Final Answer:

    To keep different pieces of data separate and update them independently. -> Option A
  4. Quick Check:

    Separate state variables = easier updates [OK]
Hint: Multiple states mean clearer, independent updates [OK]
Common Mistakes:
  • Thinking React limits to one state variable
  • Believing multiple states slow down components
  • Confusing state variables with props
2. Which of the following is the correct way to declare two separate state variables in a React functional component?
easy
A. const [count, setCount] = useState(0); const [name, setName] = useState('');
B. const state = useState({count: 0, name: ''});
C. const count = useState(0); const name = useState('');
D. useState(count, 0); useState(name, '');

Solution

  1. Step 1: Check syntax for multiple states

    Each state variable uses its own useState call with array destructuring for value and setter.
  2. Step 2: Compare options

    const [count, setCount] = useState(0); const [name, setName] = useState(''); correctly declares two separate states with their setters. Others misuse useState or syntax.
  3. Final Answer:

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

    Separate useState calls = correct syntax [OK]
Hint: Use separate useState calls with array destructuring [OK]
Common Mistakes:
  • Trying to declare multiple states in one useState call without destructuring
  • Missing setter functions
  • Incorrect useState syntax
3. What will be the output of this React component when the button is clicked once?
import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);
  const [text, setText] = useState('Hello');

  function handleClick() {
    setCount(count + 1);
    setText(text + '!');
  }

  return (
    <div>
      <p>Count: {count}</p>
      <p>Text: {text}</p>
      <button onClick={handleClick}>Click</button>
    </div>
  );
}
medium
A. Count: 0 and Text: Hello
B. Count: 0 and Text: Hello!
C. Count: 1 and Text: Hello!
D. Count: 1 and Text: Hello

Solution

  1. Step 1: Understand state updates on click

    Clicking the button calls handleClick, which increments count by 1 and adds '!' to text.
  2. Step 2: Check initial values and updates

    Initial count is 0, text is 'Hello'. After one click, count becomes 1, text becomes 'Hello!'.
  3. Final Answer:

    Count: 1 and Text: Hello! -> Option C
  4. Quick Check:

    State updates reflect in UI after click [OK]
Hint: Each setter updates its own state independently [OK]
Common Mistakes:
  • Assuming states update asynchronously and show old values immediately
  • Forgetting to update both states
  • Mixing up initial and updated values
4. Identify the error in this React component using multiple state variables:
import React, { useState } from 'react';

function Example() {
  const [count, setCount] = useState(0);
  const [name, setName] = useState('');

  function update() {
    setCount(count + 1);
    setName = 'John';
  }

  return <button onClick={update}>Update</button>;
}
medium
A. Missing import of useState from React.
B. Not initializing count with a string.
C. Using semicolon after return statement.
D. Incorrect assignment to setName instead of calling it as a function.

Solution

  1. Step 1: Check how state setters are used

    State setters like setName must be called as functions, e.g., setName('John').
  2. Step 2: Identify the error in update function

    The code uses assignment setName = 'John' instead of calling setName('John'), which is incorrect.
  3. Final Answer:

    Incorrect assignment to setName instead of calling it as a function. -> Option D
  4. Quick Check:

    State setters must be called, not assigned [OK]
Hint: Call setters as functions, never assign them [OK]
Common Mistakes:
  • Assigning value to setter instead of calling it
  • Forgetting to import useState
  • Misusing return syntax
5. You want to track a user's first name, last name, and age separately in a React component. Which approach best uses multiple state variables to keep the component organized and easy to update?
hard
A. Use one useState call with an object containing first name, last name, and age.
B. Use three separate useState calls: one for first name, one for last name, and one for age.
C. Use one useState call with an array containing first name, last name, and age.
D. Use three variables without useState since they don't change.

Solution

  1. Step 1: Consider state clarity and updates

    Using separate state variables for each piece of data allows independent updates and clearer code.
  2. Step 2: Compare with other options

    Use one useState call with an object containing first name, last name, and age. groups data but requires careful merging on updates. Use one useState call with an array containing first name, last name, and age. uses array which is less clear. Use three variables without useState since they don't change. ignores state management.
  3. Final Answer:

    Use three separate useState calls: one for first name, one for last name, and one for age. -> Option B
  4. Quick Check:

    Separate states = easier updates and clarity [OK]
Hint: Separate states for separate data pieces [OK]
Common Mistakes:
  • Using one object state and forgetting to merge updates
  • Using arrays for unrelated data
  • Not using state for changing data
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