Задача

Написать кастомный хук useFetch(url), который возвращает { data, loading, error }. При смене url или размонтировании предыдущий запрос должен отменяться, чтобы не было гонок и обновления state после размонтирования.

Пример

function UserCard({ userId }) {
    const { data, loading, error } = useFetch(`/api/users/${userId}`);
 
    if (loading) return <p>Loading…</p>;
    if (error) return <p>Error: {error.message}</p>;
    return <p>{data.name}</p>;
}

Решение

См. также