State management in React
State management in React refers to how you store, update, and share data across components in a React application. Managing state effectively is crucial for building responsive, maintainable apps β especially as your app grows.
π§ What is State in React?
In React, state is data that determines how your UI behaves. When state changes, the UI updates.
There are two main types of state:
| Type | Description |
|---|---|
| Local state | State owned by a single component (useState) |
| Global state | Shared across multiple components (via Context, Redux, etc.) |
πΉ 1. Local State Management
Use React Hooks like useState and useReducer to manage local state.
const [count, setCount] = useState(0);For more complex logic:
const [state, dispatch] = useReducer(reducerFunction, initialState);πΉ 2. Global State Management
Used when you need to share state between many components. Options include:
β React Context API
- Built-in solution
- Works well for simple global data (like theme, user info, etc.)
const UserContext = React.createContext();
<UserContext.Provider value={user}>
<Child />
</UserContext.Provider>Access it with useContext(UserContext).
β Third-party Libraries
| Library | When to Use |
|---|---|
| Redux | For large apps with complex global state, actions, reducers |
| Zustand | Simpler alternative to Redux, minimal and fast |
| Recoil | Built by Facebook, supports atom-based state model |
| MobX | Observable state, automatic tracking of dependencies |
| Jotai | Primitive and modern global state library |
| XState | Based on state machines, for apps with well-defined transitions |
πΈ 3. Derived State
Sometimes you calculate state based on other state or props.
Use:
const filteredItems = items.filter(item => item.active);Or memoize for performance:
const filteredItems = useMemo(() => {
return items.filter(item => item.active);
}, [items]);πΈ 4. Server State
State that comes from a server (e.g., API data). Managed via:
useEffect+fetchoraxios- React Query, SWR, Apollo Client for powerful caching, revalidation, pagination, etc.
πΈ 5. URL State
URL-related data (like query parameters, pathname) is also state.
Managed via:
react-router-domuseSearchParams,useLocation,useNavigate
π§© Summary Table
| Type | Tools/Methods |
|---|---|
| Local state | useState, useReducer |
| Global state | Context API, Redux, Zustand, etc. |
| Derived state | useMemo, inline calculations |
| Server state | React Query, Axios + useEffect |
| URL state | React Router |
π Tips for Effective State Management
- Keep state close to where itβs needed
- Donβt overuse global state
- Use
useReducerfor complex updates - Prefer libraries (like React Query) for server state
- Donβt store derived data in state β compute it when needed

Comments are closed.