import { useState, useEffect, useCallback } from 'react'; import apiClient from '../api/apiClient'; import { AxiosError } from 'axios'; // T es el tipo de dato que esperamos de la API (ej. CotizacionBolsa[]) export function useApiData(url: string) { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const fetchData = useCallback(async () => { setLoading(true); setError(null); try { const response = await apiClient.get(url); setData(response.data); } catch (err) { if (err instanceof AxiosError) { setError(`Error al cargar datos: ${err.message}`); } else { setError('Ocurrió un error inesperado.'); } console.error(err); } finally { setLoading(false); } }, [url]); useEffect(() => { fetchData(); }, [fetchData]); return { data, loading, error, refetch: fetchData }; }