Skip to content

Commit fe97be3

Browse files
Fix bug where isSvgMode===false in nested SVG child elements
1 parent 9b75cbb commit fe97be3

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

src/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,8 @@ export default function renderToString(vnode, context, opts, inner, isSvgMode) {
172172
for (let i=0; i<len; i++) {
173173
let child = children[i];
174174
if (!falsey(child)) {
175-
let ret = renderToString(child, context, opts, true, nodeName==='svg');
175+
let childSvgMode = nodeName==='svg' ? true : nodeName==='foreignObject' ? false : isSvgMode,
176+
ret = renderToString(child, context, opts, true, childSvgMode);
176177
if (!hasLarge && pretty && isLargeString(ret)) hasLarge = true;
177178
pieces.push(ret);
178179
}

test/render.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,19 @@ describe('render', () => {
7373
});
7474

7575
it('should render SVG elements', () => {
76-
let rendered = render(<svg viewBox="0 0 360 360"><use xlinkHref="#foo"></use></svg>),
77-
expected = `<svg viewBox="0 0 360 360"><use xlink:href="#foo"></use></svg>`;
78-
79-
expect(rendered).to.equal(expected);
76+
let rendered = render((
77+
<svg>
78+
<image xlinkHref="#" />
79+
<foreignObject>
80+
<div xlinkHref="#" />
81+
</foreignObject>
82+
<g>
83+
<image xlinkHref="#" />
84+
</g>
85+
</svg>
86+
));
87+
88+
expect(rendered).to.equal(`<svg><image xlink:href="#"></image><foreignObject><div xlinkHref="#"></div></foreignObject><g><image xlink:href="#"></image></g></svg>`);
8089
});
8190
});
8291

0 commit comments

Comments
 (0)