diff options
author | 2021-10-05 09:20:51 -0700 | |
---|---|---|
committer | 2021-10-05 12:20:51 -0400 | |
commit | f8d1a35ace6e1f0c0349ab26c7b9b97b2df7a2a8 (patch) | |
tree | 1bc4510ced9e23d550058f7d8fd21977cd0271d9 /packages/renderers/renderer-solid/server.js | |
parent | 9874645d8b6468f277defd5f1bfc9d5dc2722797 (diff) | |
download | astro-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.js | 17 |
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 { |