UNPKG

@kadconsulting/dry

Version:
42 lines 1.35 kB
import { useState, useEffect } from 'react'; import axios from 'axios'; export function useFetch(url, options = {}) { const [data, setData] = useState(null); const [isLoading, setIsLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const source = axios.CancelToken.source(); const fetchData = async () => { setIsLoading(true); setError(null); try { const response = await axios({ url, cancelToken: source.token, ...options, }); setData(response.data); } catch (error) { if (axios.isCancel(error)) { console.log('Cancelled fetch request.'); } else if (axios.isAxiosError(error)) { setError(error); } else { setError(new Error('An unknown error occurred')); } } finally { setIsLoading(false); } }; fetchData(); return () => { source.cancel(); }; }, [url, JSON.stringify(options)]); return { data, isLoading, error }; } //# sourceMappingURL=useFetch.js.map