summaryrefslogtreecommitdiff
path: root/packages/renderers/renderer-solid/server.js
diff options
context:
space:
mode:
authorGravatar Ryan Carniato <ryansolid@gmail.com> 2021-10-05 09:20:51 -0700
committerGravatar GitHub <noreply@github.com> 2021-10-05 12:20:51 -0400
commitf8d1a35ace6e1f0c0349ab26c7b9b97b2df7a2a8 (patch)
tree1bc4510ced9e23d550058f7d8fd21977cd0271d9 /packages/renderers/renderer-solid/server.js
parent9874645d8b6468f277defd5f1bfc9d5dc2722797 (diff)
downloadastro-f8d1a35ace6e1f0c0349ab26c7b9b97b2df7a2a8.tar.gz
astro-f8d1a35ace6e1f0c0349ab26c7b9b97b2df7a2a8.tar.zst
astro-f8d1a35ace6e1f0c0349ab26c7b9b97b2df7a2a8.zip
Add hydration to Solid renderer (#1479)
* feat: add hydration to Solid renderer * fix: intersection observer, move script to the end
Diffstat (limited to 'packages/renderers/renderer-solid/server.js')
-rw-r--r--packages/renderers/renderer-solid/server.js17
1 files changed, 8 insertions, 9 deletions
diff --git a/packages/renderers/renderer-solid/server.js b/packages/renderers/renderer-solid/server.js
index 86506ca45..1d99ac378 100644
--- a/packages/renderers/renderer-solid/server.js
+++ b/packages/renderers/renderer-solid/server.js
@@ -1,24 +1,23 @@
-import { createComponent } from 'solid-js';
-import { renderToStringAsync, ssr } from 'solid-js/web/dist/server.js';
+import { renderToString, ssr, createComponent } from 'solid-js/web/dist/server.js';
-async function check(Component, props, children) {
+function check(Component, props, children) {
if (typeof Component !== 'function') return false;
- const { html } = await renderToStaticMarkup(Component, props, children);
+ const { html } = renderToStaticMarkup(Component, props, children);
return typeof html === 'string';
}
-async function renderToStaticMarkup(Component, props, children) {
- const html = await renderToStringAsync(
- () => () =>
+function renderToStaticMarkup(Component, props, children) {
+ const html = renderToString(
+ () =>
createComponent(Component, {
...props,
// In Solid SSR mode, `ssr` creates the expected structure for `children`.
// In Solid client mode, `ssr` is just a stub.
- children: ssr([`<astro-fragment>${children}</astro-fragment>`]),
+ children: ssr(`<astro-fragment>${children}</astro-fragment>`),
})
);
- return { html };
+ return { html: html + `<script>window._$HYDRATION||(window._$HYDRATION={events:[],completed:new WeakSet})</script>` };
}
export default {