Proyectos de Subversion LeadersLinked - SPA

Rev

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

Rev Autor Línea Nro. Línea
3481 stevensc 1
import { api } from '@api';
2
import { useApi } from './useApi';
3
import { useAlert } from './useAlert';
3498 stevensc 4
import { useEffect, useRef } from 'react';
3481 stevensc 5
 
3498 stevensc 6
const getResources = async (url, params) => {
7
  return await api.get(url, { params });
3481 stevensc 8
};
9
 
3498 stevensc 10
export function useFetch(url, { params = undefined } = {}) {
3481 stevensc 11
  const { showError } = useAlert();
3496 stevensc 12
  const { loading, data, error, execute } = useApi(getResources);
3498 stevensc 13
  const hasFetched = useRef(false);
3481 stevensc 14
 
3496 stevensc 15
  useEffect(() => {
3599 stevensc 16
    if (!hasFetched.current && url) {
3498 stevensc 17
      execute(url, params);
18
      hasFetched.current = true;
19
    } else if (url || params) {
20
      execute(url, params);
21
    }
3599 stevensc 22
  }, [url, params, execute]);
3496 stevensc 23
 
24
  useEffect(() => {
25
    if (error) showError(error);
3599 stevensc 26
  }, [error, showError]);
3496 stevensc 27
 
3481 stevensc 28
  return {
29
    data,
30
    loading,
3498 stevensc 31
    refetch: () => execute(url, params)
3481 stevensc 32
  };
33
}