import { useState, useEffect, useCallback } from 'react'; import apiClient from '../api/apiClient'; import { AxiosError } from 'axios'; export function useApiData(endpoint: 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 { // Anteponemos '/api' a cada endpoint solicitado. // Ejemplo: si el endpoint es '/mercados/granos', la URL final será '/api/mercados/granos' const response = await apiClient.get(`/api${endpoint}`); setData(response.data); } catch (err) { if (err instanceof AxiosError) { setError(`Error de red o de la API: ${err.message}`); } else { setError('Ocurrió un error inesperado.'); } console.error(err); } finally { setLoading(false); } }, [endpoint]); useEffect(() => { fetchData(); }, [fetchData]); return { data, loading, error, refetch: fetchData }; }