返回 presentation-ai
useImageLoaded.ts
根目录 / src / components / ui / font-picker / utils / useImageLoaded.ts
1 import { useEffect, useState } from "react";
2
3 export function useImageLoaded(src: string) {
4 const [loaded, setLoaded] = useState(false);
5
6 useEffect(() => {
7 if (!src) {
8 return;
9 }
10
11 const image = new Image();
12 image.src = src;
13
14 const handleLoad = () => setLoaded(true);
15 const handleError = () => setLoaded(false);
16
17 image.addEventListener("load", handleLoad);
18 image.addEventListener("error", handleError);
19
20 return () => {
21 image.removeEventListener("load", handleLoad);
22 image.removeEventListener("error", handleError);
23 };
24 }, [src]);
25
26 return loaded;
27 }
28
28 lines TYPESCRIPT