UNPKG

solid-native

Version:

Use solid.js to develop native mobile applications

36 lines 1.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSolidComp = void 0; const react_1 = require("react"); const solid_js_1 = require("solid-js"); const util_1 = require("./util"); function useSolidComp(Comp, ...args) { var _a; const result = (0, react_1.useRef)(); const rerender = (0, util_1.useRerender)(); (0, react_1.useEffect)(() => dispose, [Comp, ...args]); const { dispose } = (0, util_1.useMemoCustom)(() => (0, solid_js_1.createRoot)((dispose) => { let firstRun = true; const owner = (0, solid_js_1.getOwner)(); const resultMaybeAccessor = (0, solid_js_1.untrack)(() => Comp(...args)); if (typeof resultMaybeAccessor === "function") { const ch = (0, solid_js_1.children)(resultMaybeAccessor); (0, solid_js_1.createRenderEffect)(() => { result.current = ch(); if (firstRun) { firstRun = false; } else { setTimeout(rerender, 0); } }); } else { result.current = resultMaybeAccessor; } return { owner, dispose }; }), [Comp, ...args]); return (_a = result.current) !== null && _a !== void 0 ? _a : null; } exports.useSolidComp = useSolidComp; //# sourceMappingURL=useSolidComp.js.map