solid-native
Version:
Use solid.js to develop native mobile applications
36 lines • 1.38 kB
JavaScript
;
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