Loading content...
Loading content...
The useState hook is used in React functional components to store and manage data (state) that changes over time.
In simple words:
It helps your component remember values and update the UI when they change.
To store dynamic data (like count, input, toggle)
To update UI automatically when data changes
To manage user interaction
javascript
const [state, setState] = useState(initialValue);state → current value
setState → function to update value
initialValue → starting value
javascript
const [count, setCount] = useState(0);Even after re-render, value stays updated
plaintext
setCount(count + 1);UI updates automatically
javascript
import { useState } from 'react';
export default function Counter() {
const [count, setCount] = useState(0);
function handleClick() {
setCount(count + 1);
}
return (
<button onClick={handleClick}>
Click {count} me
</button>
);
}useState(0) → initial value is 0setCount(count + 1) → increment value
UI updates automatically
plaintext
import React, { useState } from 'react';
function Form() {
const [name, setName] = useState('');
const [age, setAge] = useState('');
const [submitted, setSubmitted] = useState(false);
const handleSubmit = () => {
setSubmitted(true);
};
return (
<div>
<input
type="text"
value={name}
onChange={(e) => setName(e.target.value)}
placeholder="Enter your name"
/>
<input
type="number"
value={age}
onChange={(e) => setAge(e.target.value)}
placeholder="Enter your age"
/>
<button onClick={handleSubmit}>Submit</button>
{submitted && <p>Form Submitted!</p>}
</div>
);
}
export default Form;useState('') → empty initial value
onChange → updates state dynamically
submitted → controls UI rendering
Use when state depends on previous value:
javascript
setCount(prevCount => prevCount + 1);Updates are not immediate
React batches updates for performance
❌ Wrong:
plaintext
setState({ name: "Anil" });✅ Correct:
plaintext
setState(prev => ({ ...prev, name: "Anil" }));Number
String
Array
Object
Boolean
plaintext
const [count, setCount] = useState(() => computeValue());Runs only once (performance optimization)
plaintext
setValue(10); // no re-render if already 10Use it when:
You need simple state
Data changes over time
UI depends on user interaction
Use functional updates when needed
Avoid unnecessary re-renders
Use useReducer for complex logic
useState is used for managing state in functional components
It returns value + update function
Updating state causes re-render
Best for simple and small state management