Skip to content

Commit 36b462a

Browse files
committed
fix(children): ensure the array of children is well handled
Add missing indentation + raw-string child
1 parent 17c9571 commit 36b462a

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

index-test.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,4 +199,22 @@ describe(`reactElementToJSXString(ReactElement)`, () => {
199199
reactElementToJSXString(<div a={{}} />)
200200
).toEqual(`<div a={{}} />`);
201201
});
202+
203+
it(`reactElementToJSXString(<div><span /><span /></div>)`, () => {
204+
expect(
205+
reactElementToJSXString(<div><span /><span /></div>)
206+
).toEqual(`<div>
207+
<span />
208+
<span />
209+
</div>`);
210+
});
211+
212+
it(`reactElementToJSXString(<div>foo<div /></div>)`, () => {
213+
expect(
214+
reactElementToJSXString(<div>foo<div /></div>)
215+
).toEqual(`<div>
216+
foo
217+
<div />
218+
</div>`);
219+
});
202220
});

index.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@ export default function reactElementToJSXString(ReactElement) {
1111
}
1212

1313
function toJSXString({ReactElement = null, lvl = 0, inline = false}) {
14-
if (!isElement(ReactElement)) {
15-
throw new Error('react-element-to-jsx-string: Expected a ReactElement');
14+
if (typeof ReactElement === 'string') {
15+
return ReactElement;
16+
} else if (!isElement(ReactElement)) {
17+
throw new Error('react-element-to-jsx-string: Expected a ReactElement, ' +
18+
'got `' + (typeof ReactElement) + '`');
1619
}
1720

1821
let tagName;
@@ -58,7 +61,7 @@ function toJSXString({ReactElement = null, lvl = 0, inline = false}) {
5861
.toArray(children)
5962
.map(
6063
recurse({lvl, inline})
61-
);
64+
).join('\n' + spacer(lvl));
6265
}
6366
if (!inline) {
6467
out += `\n`;

0 commit comments

Comments
 (0)