From 30db3822d605c9a0b0834ba80505b6401ace5baf Mon Sep 17 00:00:00 2001 From: Chris Wanstrath Date: Thu, 12 Feb 2026 07:42:23 -0800 Subject: [PATCH] don't regenerate root every render --- src/index.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/index.tsx b/src/index.tsx index dbb3490..08a711b 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -286,14 +286,18 @@ export function define(nameOrDef: string | TagDef, defIfNamed?: TagDef) { if (styles[`.${name}`]) throw `${name} is already defined! Must use unique names.` registerStyles(name, def) + const currentProps: Record = {} + const Root = makeComponent(name, def, currentProps) + return (props: Record) => { - const parts: Record = {} + for (const key in currentProps) delete currentProps[key] + Object.assign(currentProps, props) + const parts: Record = { Root } for (const [part] of Object.entries(def.parts ?? {})) parts[part] = makeComponent(name, def, props, part) - parts.Root = makeComponent(name, def, props) - return def.render?.({ props, parts }) ?? {props.children} + return def.render?.({ props, parts }) ?? {props.children} } }