diff options
author | 2021-07-09 09:00:32 -0400 | |
---|---|---|
committer | 2021-07-09 09:00:32 -0400 | |
commit | 1e01251454c13dfcaeaba67bdfdb6b807ba96e5c (patch) | |
tree | 088e814b443d72af45a51887e536fe946e23c999 /packages/renderers/renderer-react/server.js | |
parent | 0af70d68c2d19220d3f578ed1309fd06a70178f7 (diff) | |
download | astro-1e01251454c13dfcaeaba67bdfdb6b807ba96e5c.tar.gz astro-1e01251454c13dfcaeaba67bdfdb6b807ba96e5c.tar.zst astro-1e01251454c13dfcaeaba67bdfdb6b807ba96e5c.zip |
Use correct React rendering API or hydration (#636)
* Use correct React rendering API or hydration
* Add changeset
Diffstat (limited to 'packages/renderers/renderer-react/server.js')
-rw-r--r-- | packages/renderers/renderer-react/server.js | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/packages/renderers/renderer-react/server.js b/packages/renderers/renderer-react/server.js index d4d9f0cf8..e4f1cf690 100644 --- a/packages/renderers/renderer-react/server.js +++ b/packages/renderers/renderer-react/server.js @@ -1,5 +1,5 @@ import { Component as BaseComponent, createElement as h } from 'react'; -import { renderToStaticMarkup as renderToString } from 'react-dom/server.js'; +import { renderToStaticMarkup as reactRenderToStaticMarkup, renderToString } from 'react-dom/server.js'; import StaticHtml from './static-html.js'; const reactTypeof = Symbol.for('react.element'); @@ -26,7 +26,7 @@ function check(Component, props, children) { return h('div'); } - renderToStaticMarkup(Tester, props, children); + renderToStaticMarkup(Tester, props, children, {}); if (error) { throw error; @@ -34,8 +34,14 @@ function check(Component, props, children) { return isReactComponent; } -function renderToStaticMarkup(Component, props, children) { - const html = renderToString(h(Component, { ...props, children: h(StaticHtml, { value: children }), innerHTML: children })); +function renderToStaticMarkup(Component, props, children, metadata) { + const vnode = h(Component, { ...props, children: h(StaticHtml, { value: children }), innerHTML: children }); + let html; + if(metadata.hydrate) { + html = renderToString(vnode); + } else { + html = reactRenderToStaticMarkup(vnode); + } return { html }; } |