React
Async/await in useEffect - Common mistakes
Je kan useEffect async nicht direct maken.
Het probleem
useEffect kan geen promise returnen (collision met cleanup) Async function returns promise Mustnt directly await in dependency
De oplossing
Async function definiëren INSIDE effect Call the async function Or use abort controller for cleanup
Code Voorbeelden
JAVASCRIPTAsync patterns
// ❌ FOUT
useEffect(async () => {
const data = await fetch('/api/user');
}, []);
// ✅ CORRECT: Define inside
useEffect(() => {
async function fetchUser() {
const res = await fetch('/api/user');
setUser(await res.json());
}
fetchUser();
}, []);
// ✅ Best: With AbortController for cleanup
useEffect(() => {
const controller = new AbortController();
async function fetch() {
try {
const res = await fetch('/api/user', {
signal: controller.signal
});
setUser(await res.json());
} catch (e) {
if (e.name !== 'AbortError') console.error(e);
}
}
fetch();
return () => controller.abort(); // Cleanup
}, []);Relevante trefwoorden
asyncawaituseEffect