React6 min read
React useEffect
Master useEffect hook to handle side effects like API calls, timers, and subscriptions.
Sarah Johnson
December 20, 2025
0.0k0
useEffect lets you perform side effects - data fetching, timers, subscriptions.
Basic useEffect
Runs after every render:
import { useState, useEffect } from 'react';
function App() {
const [count, setCount] = useState(0);
useEffect(() => {
document.title = `Count: ${count}`;
});
return <button onClick={() => setCount(count + 1)}>Click</button>;
}
useEffect with Dependencies
Run only when specific values change:
useEffect(() => {
document.title = `Count: ${count}`;
}, [count]); // Only runs when count changes
Run Once (On Mount)
Empty dependency array:
useEffect(() => {
console.log('Component mounted!');
}, []); // Runs only once
Cleanup Function
Clean up subscriptions/timers:
useEffect(() => {
const timer = setInterval(() => {
console.log('Tick');
}, 1000);
return () => clearInterval(timer); // Cleanup
}, []);
Fetching Data
function UserProfile() {
const [user, setUser] = useState(null);
useEffect(() => {
fetch('https://api.example.com/user')
.then(res => res.json())
.then(data => setUser(data));
}, []);
return <div>{user?.name}</div>;
}
Common Patterns
Multiple Effects:
useEffect(() => {
// Effect 1
}, [dep1]);
useEffect(() => {
// Effect 2
}, [dep2]);
Remember
- Empty [] = runs once
- No [] = runs every render
- [count] = runs when count changes
- Always cleanup subscriptions/timers
Next: Learn custom hooks!
#React#Hooks#useEffect#Intermediate