Перед вами абсолютно стандартный хук из интернетов.
Проблема с ним в том, что он рендерится 3 раза.
(первый при монтировании, второй при изменении стейта Дата и третий при изменении стейта Лоадинг)
Помогите придумать как убрать один из рендеров и чтобы было красиво.
Спасибо
(Как костыль сейчас один стейт на все. При лоадинге он остается нулом а при ошибке приходит просто строка, ну и при успехе там массив)
import { useState, useCallback, useEffect } from 'react';
export function useRequest(request) {
const [data, setData] = useState(null);
const [isLoading, setIsLoading] = useState(true);
const [error, setError] = useState(null);
const execute = useCallback(() => {
return request()
.then((response) => setData(response))
.catch((error) => setError(error))
.finally(() => setIsLoading(false));
}, [request]);
useEffect(() => {
execute();
}, [execute]);
return { data, isLoading, error };
}