intermediate
Fetching Data on Component Mount
Learn how to use the useEffect hook to fetch data when a component first renders and handle cleanup properly.
import { useState, _________ } from 'react';
interface User {
id: number;
name: string;
email: string;
}
export function UserProfile({ userId }: { userId: number }) {
const [user, setUser] = useState<User | null>(null);
const [loading, setLoading] = useState(true);
_________(() => {
let isMounted = true;
async function fetchUser() {
setLoading(true);
try {
const response = await fetch(`https://api.example.com/users/${userId}`);
const data = await response.json();
if (isMounted) {
setUser(data);
setLoading(false);
}
} catch (error) {
if (isMounted) {
setLoading(false);
}
}
}
fetchUser();
return () => {
__________...;
};
}, ___);
if (loading) {
return <div>Loading...</div>;
}
if (!user) {
return <div>No user found</div>;
}
return (
<div>
<h2>{user.name}</h2>
<p>{user.email}</p>
</div>
);
}0/4 filled tab moves · Ctrl+↵ submits · Ctrl+Shift+↵ runsstarter code