UNPKG

solid-awesome-hooks

Version:
24 lines (23 loc) 918 B
import { createDeferred, createSignal, createEffect, onMount, } from "solid-js"; /** * Preloads modules imported with `lazy` when the browser is idle one by one * @param lazyModules */ export const useModulePreloader = (lazyModules) => { const [isLoadingStarted, setLoadingStarted] = createSignal(false); const [moduleIndex, setModuleIndex] = createSignal(0); const deferredModuleIndex = createDeferred(moduleIndex); const deferredStarted = createDeferred(isLoadingStarted); onMount(() => setLoadingStarted(true)); createEffect(() => { if (!deferredStarted()) return; createEffect(() => { if (deferredModuleIndex() >= lazyModules.length) return; const module = lazyModules[deferredModuleIndex()]; module.preload(); setModuleIndex((index) => index + 1); }); }); };