fix render

This commit is contained in:
Rizky 2023-10-17 18:15:37 +07:00
parent 1125dfd081
commit 0a7b744846
4 changed files with 25 additions and 8 deletions

View File

@ -9,7 +9,6 @@ import { preload } from "../logic/route";
import { treePropEval } from "../logic/tree-prop"; import { treePropEval } from "../logic/tree-prop";
import { treeScopeEval } from "../logic/tree-scope"; import { treeScopeEval } from "../logic/tree-scope";
import { LTextInternal } from "./l-text"; import { LTextInternal } from "./l-text";
import { createPortal } from "react-dom";
export const LRender: FC<{ export const LRender: FC<{
id: string; id: string;
@ -69,15 +68,23 @@ export const LRenderInternal: FC<{
useEffect(() => { useEffect(() => {
if (meta) { if (meta) {
meta.mounted = true; meta.mounted = true;
if (meta.pendingRender) {
meta.pendingRender = false;
render({});
}
} }
}, []); });
if (!meta) { if (!meta) {
return null; return null;
} }
meta.render = () => { meta.render = () => {
if (meta && meta.mounted) { if (meta) {
render({}); if (meta.mounted) {
render({});
} else {
meta.pendingRender = true;
}
} }
}; };
let item = meta.item; let item = meta.item;

View File

@ -29,6 +29,7 @@ export type ItemMeta = {
isLayout: boolean; isLayout: boolean;
render?: () => void; render?: () => void;
mounted?: boolean; mounted?: boolean;
pendingRender: boolean;
}; };
export type LPage = { export type LPage = {

View File

@ -277,10 +277,18 @@ const createLocal = (p: PG, id: string) => {
cachedPath[page_id] = {}; cachedPath[page_id] = {};
} }
if (cachedLocal[page_id][itemid]) { if (cachedLocal[page_id][itemid]) {
if (cache === false && cachedPath[page_id][itemid] !== location.href) { if (cache === false) {
cachedPath[page_id][itemid] = location.href; if (cachedPath[page_id][itemid] !== location.href) {
genScope(); cachedPath[page_id][itemid] = location.href;
cachedLocal[page_id][itemid] = meta.scope[name]; 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 { } else {
meta.scope[name] = cachedLocal[page_id][itemid]; meta.scope[name] = cachedLocal[page_id][itemid];
meta.scope[name].render = () => { meta.scope[name].render = () => {

View File

@ -21,6 +21,7 @@ export const produceCSS = (
): string => { ): string => {
try { try {
return cx([ return cx([
item.name,
css` css`
display: flex; display: flex;
position: relative; position: relative;