31 lines
812 B
JavaScript
31 lines
812 B
JavaScript
import { useEffect, useState } from 'react';
|
|
import api from '../utils/api';
|
|
|
|
/**
|
|
* @param {String} url
|
|
* @param {*} defaultData
|
|
* @param {String} method
|
|
* @param {Object} options
|
|
*/
|
|
function useAPI(url, defaultData = [], method = "get", options = {}) {
|
|
|
|
const [isLoading, setIsLoading] = useState(true);
|
|
const [data, setData] = useState(defaultData);
|
|
const [hasError, setHasError] = useState(false);
|
|
|
|
useEffect(() => {
|
|
api[method](url, options)
|
|
.then((result) => {
|
|
setData(result.data);
|
|
setIsLoading(false);
|
|
})
|
|
.catch((error) => {
|
|
setHasError(true);
|
|
console.error(error);
|
|
});
|
|
}, []);
|
|
|
|
return [isLoading, data, hasError];
|
|
}
|
|
|
|
export default useAPI; |