use-script-loader
Version:
React.js script loader hook
36 lines (35 loc) • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useScriptLoader = void 0;
var react_1 = require("react");
var scriptLoader_1 = require("./scriptLoader");
function useScriptLoader(source, attrs, node, skip) {
var _a = react_1.useState(true), loading = _a[0], setIsLoading = _a[1];
var _b = react_1.useState({}), error = _b[0], setError = _b[1];
var _c = react_1.useState({}), scriptReference = _c[0], setScriptReference = _c[1];
react_1.useEffect(function () {
var scripts = Array.from(document.scripts);
for (var i = 0; i < scripts.length; i++) {
if (scripts[i].src.includes(source)) {
setIsLoading(false);
return;
}
}
if (!skip) {
scriptLoader_1.default(source, attrs, node)
.then(function (script) {
setIsLoading(false);
setScriptReference(script);
})
.catch(function (e) {
console.error(e);
setError(e);
});
}
else {
setIsLoading(false);
}
}, []);
return [loading, scriptReference, error];
}
exports.useScriptLoader = useScriptLoader;