diff --git a/app/web/src/render/live/elements/l-render.tsx b/app/web/src/render/live/elements/l-render.tsx index 91669d8c..81914b65 100644 --- a/app/web/src/render/live/elements/l-render.tsx +++ b/app/web/src/render/live/elements/l-render.tsx @@ -9,7 +9,6 @@ import { preload } from "../logic/route"; import { treePropEval } from "../logic/tree-prop"; import { treeScopeEval } from "../logic/tree-scope"; import { LTextInternal } from "./l-text"; -import { createPortal } from "react-dom"; export const LRender: FC<{ id: string; @@ -69,15 +68,23 @@ export const LRenderInternal: FC<{ useEffect(() => { if (meta) { meta.mounted = true; + if (meta.pendingRender) { + meta.pendingRender = false; + render({}); + } } - }, []); + }); if (!meta) { return null; } meta.render = () => { - if (meta && meta.mounted) { - render({}); + if (meta) { + if (meta.mounted) { + render({}); + } else { + meta.pendingRender = true; + } } }; let item = meta.item; diff --git a/app/web/src/render/live/logic/global.ts b/app/web/src/render/live/logic/global.ts index ebdc94f8..908beb40 100644 --- a/app/web/src/render/live/logic/global.ts +++ b/app/web/src/render/live/logic/global.ts @@ -29,6 +29,7 @@ export type ItemMeta = { isLayout: boolean; render?: () => void; mounted?: boolean; + pendingRender: boolean; }; export type LPage = { diff --git a/app/web/src/render/live/logic/tree-scope.tsx b/app/web/src/render/live/logic/tree-scope.tsx index 07f0972d..295d34d7 100644 --- a/app/web/src/render/live/logic/tree-scope.tsx +++ b/app/web/src/render/live/logic/tree-scope.tsx @@ -277,10 +277,18 @@ const createLocal = (p: PG, id: string) => { cachedPath[page_id] = {}; } if (cachedLocal[page_id][itemid]) { - if (cache === false && cachedPath[page_id][itemid] !== location.href) { - cachedPath[page_id][itemid] = location.href; - genScope(); - cachedLocal[page_id][itemid] = meta.scope[name]; + if (cache === false) { + if (cachedPath[page_id][itemid] !== location.href) { + cachedPath[page_id][itemid] = location.href; + genScope(); + cachedLocal[page_id][itemid] = meta.scope[name]; + } else { + meta.scope[name] = cachedLocal[page_id][itemid]; + meta.scope[name].render = () => { + if (meta.render) meta.render(); + else p.render(); + }; + } } else { meta.scope[name] = cachedLocal[page_id][itemid]; meta.scope[name].render = () => { diff --git a/app/web/src/utils/css/gen.ts b/app/web/src/utils/css/gen.ts index 28fc6d0b..9016e407 100644 --- a/app/web/src/utils/css/gen.ts +++ b/app/web/src/utils/css/gen.ts @@ -21,6 +21,7 @@ export const produceCSS = ( ): string => { try { return cx([ + item.name, css` display: flex; position: relative;