Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3496 | Rev 3658 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 3496 Rev 3575
Línea 1... Línea 1...
1
import { useState, useCallback } from 'react';
1
import { useState, useCallback } from 'react';
Línea -... Línea 2...
-
 
2
 
-
 
3
const defaultOptions = {
-
 
4
  onSuccess: () => {},
-
 
5
  onError: () => {}
-
 
6
};
2
 
7
 
-
 
8
export function useApi(apiFunction, options = defaultOptions) {
-
 
9
  const { onSuccess, onError } = { ...defaultOptions, ...options };
3
export function useApi(apiFunction) {
10
 
4
  const [data, setData] = useState(null);
11
  const [data, setData] = useState(null);
5
  const [error, setError] = useState(null);
12
  const [error, setError] = useState(null);
Línea 6... Línea 13...
6
  const [loading, setLoading] = useState(false);
13
  const [loading, setLoading] = useState(false);
Línea 11... Línea 18...
11
      setData(null);
18
      setData(null);
12
      setError(null);
19
      setError(null);
13
      try {
20
      try {
14
        const result = await apiFunction(...args);
21
        const result = await apiFunction(...args);
15
        setData(result);
22
        setData(result);
-
 
23
        onSuccess(result);
16
        return result;
24
        return result;
17
      } catch (err) {
25
      } catch (err) {
18
        console.error('Error on api: ', err);
26
        console.error('Error on api: ', err);
19
        setError(err.message);
27
        setError(err.message);
-
 
28
        onError(err);
20
      } finally {
29
      } finally {
21
        setLoading(false);
30
        setLoading(false);
22
      }
31
      }
23
    },
32
    },
24
    [apiFunction]
33
    [apiFunction, onSuccess, onError]
25
  );
34
  );
Línea 26... Línea 35...
26
 
35
 
27
  return { loading, data, error, execute };
36
  return { loading, data, error, execute };