📖 Scenario: You are building a simple React form where users can type their name. This form will show the typed name below the input box in real-time.
🎯 Goal: Create a React functional component that has an input field. When the user types in the input, the component updates and shows the typed text below the input.
📋 What You'll Learn
Use React functional components
Use the useState hook to manage the input value
Create an input field with a label for accessibility
Display the typed input value below the input field
Update the displayed text as the user types
💡 Why This Matters
🌍 Real World
Handling input fields is essential for forms, search boxes, and interactive user interfaces on websites and apps.
💼 Career
React developers frequently manage input fields and state to build dynamic, user-friendly forms and interfaces.
Progress0 / 4 steps
1
Create the React component and initial state
Create a React functional component called NameInput. Inside it, create a state variable called name with initial value '' using the useState hook.
React
Hint
Remember to import useState from React and call it inside your component to create the name state variable.
2
Add an input field with a label
Inside the NameInput component, return JSX that includes a <label> with text Name: and an <input> field of type text. Connect the label to the input using the htmlFor attribute with value nameInput and set the input's id to nameInput.
React
Hint
Use a div to wrap the label and input. The label's htmlFor must match the input's id.
3
Connect input value and update state on change
Add the value attribute to the input and set it to the name state variable. Add an onChange event handler to the input that updates the name state using setName with the input's current value from event.target.value.
React
Hint
The onChange handler receives an event. Use event.target.value to get the typed text and update the state.
4
Display the typed name below the input
Below the input field, add a <p> element that displays the text You typed: followed by the current name state variable.
React
Hint
Use curly braces {} inside JSX to insert the name state variable inside the paragraph.
Practice
(1/5)
1. What is the main purpose of using useState when handling input fields in React?
easy
A. To store and update the current value of the input field
B. To style the input field dynamically
C. To fetch data from an API when input changes
D. To prevent the input field from rendering
Solution
Step 1: Understand the role of useState
useState is a React hook used to create state variables that can hold values and update them.
Step 2: Connect useState to input fields
When handling input fields, useState stores the current input value and updates it as the user types.
Final Answer:
To store and update the current value of the input field -> Option A
Quick Check:
useState manages input value = A [OK]
Hint: useState holds input value and updates on change [OK]
Common Mistakes:
Thinking useState styles the input
Confusing useState with fetching data
Believing useState stops rendering
2. Which of the following is the correct way to update state when handling an input field change in React?
easy
A. onChange={() => setValue(e.target.value)}
B. onChange={(e) => setValue(e.target.value)}
C. onChange={(e) => setValue(e.value)}
D. onChange={(e) => setValue(e.target)}
Solution
Step 1: Identify the event object usage
The event object e contains the input element in e.target, and its value is in e.target.value.
Step 2: Check the correct syntax for updating state
The state update function should be called with e.target.value inside the arrow function.
Final Answer:
onChange={(e) => setValue(e.target.value)} -> Option B
Quick Check:
Use e.target.value to update state [OK]
Hint: Use e.target.value inside onChange handler [OK]
Common Mistakes:
Omitting event parameter e
Using e.value instead of e.target.value
Passing e.target instead of its value
3. What will be displayed when the following React component is rendered and the user types 'hello' in the input field?
B. An input box with no text and an empty paragraph
C. An input box and a paragraph showing 'You typed: hello'
D. A syntax error preventing rendering
Solution
Step 1: Understand controlled input behavior
The input's value is controlled by the state variable text. Typing updates text via setText.
Step 2: Check rendered output
The paragraph displays the current text value, so typing 'hello' shows 'You typed: hello'.
Final Answer:
An input box and a paragraph showing 'You typed: hello' -> Option C
Quick Check:
Controlled input shows typed text [OK]
Hint: Controlled input updates state and shows typed text [OK]
Common Mistakes:
Thinking input is uncontrolled and won't update
Expecting paragraph to be empty
Assuming syntax error without cause
4. Identify the error in this React input handler code:
function MyInput() {
const [value, setValue] = useState('');
function handleChange() {
setValue(e.target.value);
}
return <input value={value} onChange={handleChange} />;
}
medium
A. The event parameter e is missing in handleChange
B. The value state is not initialized
C. The onChange should be onInput
D. The input should not have a value prop
Solution
Step 1: Check the handleChange function signature
handleChange uses e.target.value but does not receive e as a parameter, causing a ReferenceError.
Step 2: Correct the function to accept event
Adding e as a parameter fixes the error: function handleChange(e) { setValue(e.target.value); }.
Final Answer:
The event parameter e is missing in handleChange -> Option A
Quick Check:
Event parameter needed in handler [OK]
Hint: Always pass event parameter to onChange handler [OK]
Common Mistakes:
Forgetting to add event parameter e
Using wrong event like onInput
Removing value prop from controlled input
5. You want to create a form with two input fields, firstName and lastName, and update their values independently using a single useState object. Which code snippet correctly updates the state when either input changes?
A. Updates state but overwrites other fields, losing data
B. Wraps updated field inside another object, breaking state
C. Incorrectly nests state causing wrong structure
D. Correctly merges new field value with existing state
Solution
Step 1: Understand state update with objects
When updating part of an object state, you must merge the new field with existing fields to avoid losing data.
Step 2: Analyze each option
Updates state but overwrites other fields, losing data replaces the entire state with only one field, losing the other. Correctly merges new field value with existing state uses a function to merge previous state with the new field correctly. Options C and D incorrectly nest or wrap the state, breaking the structure.
Final Answer:
Correctly merges new field value with existing state -> Option D
Quick Check:
Use spread operator to merge state updates [OK]
Hint: Use spread ...prev to merge state updates in objects [OK]
Common Mistakes:
Overwriting entire state object losing other fields
Nesting state inside another object accidentally
Not using functional update form for safety
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.