diff options
Diffstat (limited to 'packages/integrations/react/client.js')
-rw-r--r-- | packages/integrations/react/client.js | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/packages/integrations/react/client.js b/packages/integrations/react/client.js index 7eba8984c..0579f4a08 100644 --- a/packages/integrations/react/client.js +++ b/packages/integrations/react/client.js @@ -1,15 +1,18 @@ import { createElement } from 'react'; -import { hydrateRoot } from 'react-dom/client'; +import { createRoot, hydrateRoot } from 'react-dom/client'; import StaticHtml from './static-html.js'; -export default (element) => (Component, props, children) => - hydrateRoot( - element, - createElement( +export default (element) => (Component, props, children, { client }) => + { + const componentEl = createElement( Component, - { ...props, suppressHydrationWarning: true }, + props, children != null - ? createElement(StaticHtml, { value: children, suppressHydrationWarning: true }) + ? createElement(StaticHtml, { value: children }) : children - ) - ); + ); + if (client === 'only') { + return createRoot(element).render(componentEl); + } + return hydrateRoot(element, componentEl); + }; |