UNPKG

usehooks-ts

Version:

React hook library, ready to use, written in Typescript.

40 lines 1.61 kB
import { useEffect, useState } from 'react'; function useScript(src) { var _a = useState(src ? 'loading' : 'idle'), status = _a[0], setStatus = _a[1]; useEffect(function () { if (!src) { setStatus('idle'); return; } var script = document.querySelector("script[src=\"".concat(src, "\"]")); if (!script) { script = document.createElement('script'); script.src = src; script.async = true; script.setAttribute('data-status', 'loading'); document.body.appendChild(script); var setAttributeFromEvent = function (event) { script === null || script === void 0 ? void 0 : script.setAttribute('data-status', event.type === 'load' ? 'ready' : 'error'); }; script.addEventListener('load', setAttributeFromEvent); script.addEventListener('error', setAttributeFromEvent); } else { setStatus(script.getAttribute('data-status')); } var setStateFromEvent = function (event) { setStatus(event.type === 'load' ? 'ready' : 'error'); }; script.addEventListener('load', setStateFromEvent); script.addEventListener('error', setStateFromEvent); return function () { if (script) { script.removeEventListener('load', setStateFromEvent); script.removeEventListener('error', setStateFromEvent); } }; }, [src]); return status; } export default useScript; //# sourceMappingURL=useScript.js.map