summaryrefslogtreecommitdiff
path: root/packages/integrations/solid/client.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/solid/client.js')
-rw-r--r--packages/integrations/solid/client.js14
1 files changed, 14 insertions, 0 deletions
diff --git a/packages/integrations/solid/client.js b/packages/integrations/solid/client.js
new file mode 100644
index 000000000..b67b3acdb
--- /dev/null
+++ b/packages/integrations/solid/client.js
@@ -0,0 +1,14 @@
+import { hydrate, createComponent } from 'solid-js/web';
+
+export default (element) => (Component, props, childHTML) => {
+ let children;
+ if (childHTML != null) {
+ children = document.createElement('astro-fragment');
+ children.innerHTML = childHTML;
+ }
+
+ // Using Solid's `hydrate` method ensures that a `root` is created
+ // in order to properly handle reactivity. It also handles
+ // components that are not native HTML elements.
+ hydrate(() => createComponent(Component, { ...props, children }), element);
+};