UNPKG

@open-tender/utils

Version:

A library of utils for use with Open Tender applications that utilize our cloud-based Order API.

30 lines (29 loc) 1.03 kB
import { useState, useEffect } from 'react'; // https://typesafe.blog/article/fetch-images-with-a-react-hook export const useImage = (src) => { const [hasLoaded, setHasLoaded] = useState(false); const [hasError, setHasError] = useState(false); const [hasStartedInitialFetch, setHasStartedInitialFetch] = useState(false); useEffect(() => { setHasStartedInitialFetch(true); setHasLoaded(false); setHasError(false); const image = new Image(); if (src) image.src = src; const handleError = () => { setHasError(true); }; const handleLoad = () => { setHasLoaded(true); setHasError(false); }; image.onerror = handleError; image.onload = handleLoad; return () => { image.removeEventListener('error', handleError); image.removeEventListener('load', handleLoad); }; }, [src]); return { hasLoaded, hasError, hasStartedInitialFetch }; };