2025-06-03 11:22:22 +08:00
|
|
|
import { useEffect } from "react";
|
2025-04-08 15:24:12 +08:00
|
|
|
|
2025-05-16 12:03:43 +08:00
|
|
|
const useScript = (src: string, onError?: () => void) => {
|
2025-04-08 15:24:12 +08:00
|
|
|
useEffect(() => {
|
|
|
|
|
if (document.querySelector(`script[src="${src}"]`)) {
|
2025-06-03 11:22:22 +08:00
|
|
|
return;
|
2025-04-08 15:24:12 +08:00
|
|
|
}
|
|
|
|
|
|
2025-05-30 17:18:52 +08:00
|
|
|
const script = document.createElement("script");
|
2025-04-08 15:24:12 +08:00
|
|
|
script.src = src;
|
|
|
|
|
script.async = true;
|
2025-05-16 12:03:43 +08:00
|
|
|
|
|
|
|
|
script.onerror = () => {
|
|
|
|
|
console.error(`Failed to load script: ${src}`);
|
2025-06-03 11:22:22 +08:00
|
|
|
|
|
|
|
|
onError?.();
|
2025-05-16 12:03:43 +08:00
|
|
|
};
|
|
|
|
|
|
2025-04-08 15:24:12 +08:00
|
|
|
document.body.appendChild(script);
|
|
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
|
document.body.removeChild(script);
|
|
|
|
|
};
|
2025-05-16 12:03:43 +08:00
|
|
|
}, [src, onError]);
|
2025-04-08 15:24:12 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default useScript;
|
|
|
|
|
|
|
|
|
|
export const useIconfontScript = () => {
|
2025-06-03 11:22:22 +08:00
|
|
|
// Coco Server Icons
|
|
|
|
|
useScript("https://at.alicdn.com/t/c/font_4878526_cykw3et0ezd.js");
|
|
|
|
|
// Coco App Icons
|
2025-06-26 18:40:33 +08:00
|
|
|
useScript("https://at.alicdn.com/t/c/font_4934333_80wr9yn2eup.js");
|
2025-04-08 15:24:12 +08:00
|
|
|
};
|