summaryrefslogtreecommitdiff
path: root/src/frontend/render/preact.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/render/preact.ts')
-rw-r--r--src/frontend/render/preact.ts13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/frontend/render/preact.ts b/src/frontend/render/preact.ts
index 5f5c03f56..df7c903b0 100644
--- a/src/frontend/render/preact.ts
+++ b/src/frontend/render/preact.ts
@@ -1,5 +1,6 @@
import { h, render, ComponentType } from 'preact';
import { renderToString } from 'preact-render-to-string';
+import { childrenToVnodes } from './utils';
import type { ComponentRenderer } from '../../@types/renderer';
import { createRenderer } from './renderer';
@@ -7,14 +8,18 @@ import { createRenderer } from './renderer';
Function.prototype(render);
const Preact: ComponentRenderer<ComponentType> = {
+ jsxPragma: h,
+ jsxPragmaName: 'h',
renderStatic(Component) {
- return async (props, ...children) => renderToString(h(Component, props, ...children));
+ return async (props, ...children) => {
+ return renderToString(h(Component, props, childrenToVnodes(h, children)));
+ }
},
imports: {
- preact: ['render', 'h'],
+ preact: ['render', 'Fragment', 'h'],
},
- render({ Component, root, props }) {
- return `render(h(${Component}, ${props}), ${root})`;
+ render({ Component, root, props, children }) {
+ return `render(h(${Component}, ${props}, h(Fragment, null, ...${children})), ${root})`;
},
};