diff options
Diffstat (limited to 'src/frontend/render/preact.ts')
-rw-r--r-- | src/frontend/render/preact.ts | 13 |
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})`; }, }; |