Skip to content

Commit 5570d10

Browse files
Merge pull request #324 from preactjs/mapped-precompile-children
2 parents fd43550 + 6bf321d commit 5570d10

File tree

3 files changed

+24
-3
lines changed

3 files changed

+24
-3
lines changed

.changeset/hip-beers-speak.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'preact-render-to-string': patch
3+
---
4+
5+
Fix mapped children not working with Deno's new precompile JSX transform.

src/index.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,11 @@ function _renderToString(vnode, context, isSvgMode, selectValue, parent) {
192192
const value = props.exprs[i];
193193
if (value == null) continue;
194194

195-
// Check if we're dealing with a vnode
196-
if (typeof value === 'object' && value.constructor === undefined) {
195+
// Check if we're dealing with a vnode or an array of nodes
196+
if (
197+
typeof value === 'object' &&
198+
(value.constructor === undefined || isArray(value))
199+
) {
197200
out += _renderToString(
198201
value,
199202
context,
@@ -203,7 +206,7 @@ function _renderToString(vnode, context, isSvgMode, selectValue, parent) {
203206
);
204207
} else {
205208
// Values are pre-escaped by the JSX transform
206-
out += props.exprs[i];
209+
out += value;
207210
}
208211
}
209212
}

test/render.test.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1673,5 +1673,18 @@ describe('render', () => {
16731673
let rendered = render(vnode);
16741674
expect(rendered).to.equal('<div>foo<span>bar</span></div>');
16751675
});
1676+
1677+
it('should render mapped children', () => {
1678+
let vnode = (
1679+
<Fragment
1680+
tpl={['<div>foo', '', '</div>']}
1681+
exprs={[<span>bar</span>, [<p>foo</p>, <p>bar</p>]]}
1682+
/>
1683+
);
1684+
let rendered = render(vnode);
1685+
expect(rendered).to.equal(
1686+
'<div>foo<span>bar</span><p>foo</p><p>bar</p></div>'
1687+
);
1688+
});
16761689
});
16771690
});

0 commit comments

Comments
 (0)