diff options
Diffstat (limited to 'packages/integrations/preact/src')
-rw-r--r-- | packages/integrations/preact/src/client.ts | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/packages/integrations/preact/src/client.ts b/packages/integrations/preact/src/client.ts index 32fdc9888..40475acc8 100644 --- a/packages/integrations/preact/src/client.ts +++ b/packages/integrations/preact/src/client.ts @@ -49,13 +49,19 @@ export default (element: HTMLElement) => } } - const bootstrap = client !== 'only' ? hydrate : render; - - bootstrap( - h(Component, props, children != null ? h(StaticHtml, { value: children }) : children), - element, + const child = h( + Component, + props, + children != null ? h(StaticHtml, { value: children }) : children, ); + if (client === 'only') { + element.innerHTML = ''; + render(child, element); + } else { + hydrate(child, element); + } + // Preact has no "unmount" option, but you can use `render(null, element)` element.addEventListener('astro:unmount', () => render(null, element), { once: true }); }; |