Skip to content

Commit 8627862

Browse files
fix always render comment for hydration
1 parent fca7448 commit 8627862

2 files changed

Lines changed: 23 additions & 5 deletions

File tree

src/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,8 +346,10 @@ function _renderToString(
346346
// Fragments are the least used components of core that's why
347347
// branching here for comments has the least effect on perf.
348348
return '<!--' + encodeEntities(props.UNSTABLE_comment) + '-->';
349-
} else if ('dangerouslySetInnerHTML' in props) {
350-
let html = props.dangerouslySetInnerHTML.__html ?? '';
349+
}
350+
351+
if (props.dangerouslySetInnerHTML) {
352+
let html = props.dangerouslySetInnerHTML.__html || '';
351353
return '<!--$h-->' + html + '<!--/$h-->';
352354
}
353355

test/render.test.jsx

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -886,9 +886,25 @@ describe('render', () => {
886886
let rendered = render(
887887
<div>
888888
foo
889-
<Fragment dangerouslySetInnerHTML={{ __html: null }}>
890-
<p>ignored</p>
891-
</Fragment>
889+
<Fragment dangerouslySetInnerHTML={{ __html: null }} />
890+
baz
891+
</div>
892+
);
893+
expect(rendered).to.equal('<div>foo<!--$h--><!--/$h-->baz</div>');
894+
895+
rendered = render(
896+
<div>
897+
foo
898+
<Fragment dangerouslySetInnerHTML={{ __html: undefined }} />
899+
baz
900+
</div>
901+
);
902+
expect(rendered).to.equal('<div>foo<!--$h--><!--/$h-->baz</div>');
903+
904+
rendered = render(
905+
<div>
906+
foo
907+
<Fragment dangerouslySetInnerHTML={{ __html: false }} />
892908
baz
893909
</div>
894910
);

0 commit comments

Comments
 (0)