📖 Scenario: You are building a simple React component that shows a counter. The counter starts at zero and can be increased by clicking a button.
🎯 Goal: Create a React functional component that uses the useState hook to keep track of a counter value and updates it when a button is clicked.
📋 What You'll Learn
Create a React functional component named Counter
Use the useState hook to create a state variable called count initialized to 0
Add a button that, when clicked, increases the count by 1
Display the current count value inside a <p> tag
💡 Why This Matters
🌍 Real World
Counters are common in apps for likes, votes, quantities, or steps. Learning useState helps you manage changing data in React components.
💼 Career
Understanding useState is essential for React developers to build interactive user interfaces that respond to user actions.
Progress0 / 4 steps
1
Create the Counter component and initial state
Create a React functional component named Counter. Inside it, use the useState hook to create a state variable called count initialized to 0. Also create the setter function called setCount.
React
Hint
Remember to import useState from React and call it inside your component.
2
Add a button to increase the count
Inside the Counter component, add a <button> element. Set its onClick attribute to a function that calls setCount(count + 1) to increase the count by 1 when clicked.
React
Hint
Use an arrow function inside onClick to call setCount(count + 1).
3
Display the current count value
Inside the Counter component's return, add a <p> tag that displays the current count value.
React
Hint
Use curly braces inside JSX to show the count variable.
4
Export the Counter component
Add an export statement to export the Counter component as the default export.
React
Hint
Use export default Counter; to export the component.
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
Step 1: Understand the purpose of useState
The useState hook is designed to let a React component keep track of data that can change.
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.
Final Answer:
It allows the component to remember and update data over time. -> Option B
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
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.
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.
Final Answer:
const [count, setCount] = useState(0); -> Option A
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
Step 1: Understand initial state and button action
The initial count is 0. Each button click calls setCount(count + 1), increasing count by 1.
Step 2: Calculate count after two clicks
After first click, count becomes 1. After second click, count becomes 2.
Final Answer:
Count: 2 -> Option D
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
Step 1: Check useState usage
The code assigns useState without parentheses, so it is not called as a function, which is required.
Step 2: Understand consequences
Without calling useState(), value and setValue are undefined, causing errors.
Final Answer:
useState is not called as a function. -> Option C
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?
D. const isOn = false;
isOn = !isOn}>{isOn ? 'ON' : 'OFF'}
Solution
Step 1: Understand toggle logic with useState
To toggle, state must be boolean and updated to its opposite on click.
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.