Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3484 | Rev 3575 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3496 stevensc 1
import { useState, useCallback } from 'react';
3481 stevensc 2
 
3496 stevensc 3
export function useApi(apiFunction) {
3481 stevensc 4
  const [data, setData] = useState(null);
5
  const [error, setError] = useState(null);
6
  const [loading, setLoading] = useState(false);
7
 
8
  const execute = useCallback(
9
    async (...args) => {
10
      setLoading(true);
11
      setData(null);
12
      setError(null);
13
      try {
14
        const result = await apiFunction(...args);
15
        setData(result);
16
        return result;
17
      } catch (err) {
3496 stevensc 18
        console.error('Error on api: ', err);
19
        setError(err.message);
3481 stevensc 20
      } finally {
21
        setLoading(false);
22
      }
23
    },
24
    [apiFunction]
25
  );
26
 
27
  return { loading, data, error, execute };
28
}