summaryrefslogtreecommitdiff
path: root/packages/integrations/preact/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/preact/src')
-rw-r--r--packages/integrations/preact/src/client.ts16
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 });
};