summaryrefslogtreecommitdiff
path: root/packages/integrations/react
diff options
context:
space:
mode:
Diffstat (limited to 'packages/integrations/react')
-rw-r--r--packages/integrations/react/client-v17.js21
-rw-r--r--packages/integrations/react/client.js21
2 files changed, 24 insertions, 18 deletions
diff --git a/packages/integrations/react/client-v17.js b/packages/integrations/react/client-v17.js
index 64284a0b0..32ba87558 100644
--- a/packages/integrations/react/client-v17.js
+++ b/packages/integrations/react/client-v17.js
@@ -1,15 +1,18 @@
import { createElement } from 'react';
-import { hydrate } from 'react-dom';
+import { render, hydrate } from 'react-dom';
import StaticHtml from './static-html.js';
-export default (element) => (Component, props, children) =>
- hydrate(
- 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
- ),
- element
- );
+ );
+ if (client === 'only') {
+ return render(componentEl, element);
+ }
+ return hydrate(componentEl, element);
+ };
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);
+ };