1. The Problem: Keeping track of UI changes (analogy)
Imagine you’re managing a restaurant.
You have a whiteboard showing:
- How many free tables are left.
- Which dishes are available.
- The current queue of orders.
If the staff forgets to update the board, customers will see incorrect information.
The same happens in a web app: the UI must stay in sync with the underlying data.
The problem in React apps
Modern UIs are event-driven: users click, type, submit, navigate.
APIs respond asynchronously.
Without a predictable way to manage state, your components can become out of sync — showing stale or incorrect data.
React’s declarative model needs state to drive re-renders correctly.
2. A Better Solution: State & useState
In React, State is the source of truth for a component.
When state changes → React triggers a re-render, updating the UI to reflect the current state.
How useState
works
import { useState } from 'react';
export default function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Current count: {count}</p>
<button onClick={() => setCount(count + 1)}>
Increment
</button>
</div>
);
}
Think of it as...
📝 A reactive variable:
When count
changes → React automatically re-renders this component.
Key principles
âś… Declare state with useState(initialValue)
âś… Update state via the setter (setCount
)
âś… State changes trigger reactive re-renders
âś… UI always reflects the current state
3. Why It Matters
- Ensures UI & data stay in sync
- Drives reactive UIs with automatic updates
- Core to React’s model: state → UI
- Enables user interactions: forms, counters, filters, modals, etc.
Common pitfalls
❌ Overusing global state when local useState
would suffice
❌ Mutating state directly instead of using the setter
❌ Putting too much state in a parent → unnecessary re-renders of child components
❌ Forgetting that state updates are async (batching)
Conclusion
State is the foundation of React’s reactivity.
It allows your components to respond to user actions and external events seamlessly.
Mastering state management is key to building robust, scalable and dynamic React applications.
If your UI needs to change — you’ll be working with state!
👋 If you found this article interesting or want to get in touch, I’m active on X @mirchezz
Top comments (0)