25 lines
504 B
TypeScript
25 lines
504 B
TypeScript
import { useEffect, useState } from "react"
|
|
|
|
function useImage(file: File | null): [HTMLImageElement, boolean] {
|
|
const [image] = useState(new Image())
|
|
const [isLoaded, setIsLoaded] = useState(false)
|
|
|
|
useEffect(() => {
|
|
if (!file) {
|
|
return
|
|
}
|
|
image.onload = () => {
|
|
setIsLoaded(true)
|
|
}
|
|
setIsLoaded(false)
|
|
image.src = URL.createObjectURL(file)
|
|
return () => {
|
|
image.onload = null
|
|
}
|
|
}, [file, image])
|
|
|
|
return [image, isLoaded]
|
|
}
|
|
|
|
export { useImage }
|