Rev 1621 | Rev 2208 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import { useState, useEffect } from 'react'import { axios } from '../utils'import { useDispatch } from 'react-redux'import { addNotification } from '../redux/notification/notification.actions'const useFetch = (url, defaultValue = {}) => {const [data, setData] = useState(defaultValue)const [isLoading, setIsLoading] = useState(true)const dispatch = useDispatch()const getResources = () => {if (!url) returnsetIsLoading(true)axios.get(url).then(({ data }) => {if (!data.data) {setData(data)return}if (!data.success) {const errorMessage =typeof data === 'string'? data: Object.entries(data).map(([key, value]) => `${key}: ${value}`).join(', ')throw new Error(errorMessage)}setData(data.data)}).catch((err) => {dispatch(addNotification({ style: 'danger', msg: err.message }))}).finally(() => setIsLoading(false))}useEffect(() => {getResources()}, [url])return {data,mutate: setData,isLoading,refetch: getResources}}export default useFetch