diff --git a/index-test.js b/index-test.js index fe35497bd..593ddd33a 100644 --- a/index-test.js +++ b/index-test.js @@ -199,4 +199,22 @@ describe(`reactElementToJSXString(ReactElement)`, () => { reactElementToJSXString(
) ).toEqual(`
`); }); + + it(`reactElementToJSXString(
)`, () => { + expect( + reactElementToJSXString(
) + ).toEqual(`
+ + +
`); + }); + + it(`reactElementToJSXString(
foo
)`, () => { + expect( + reactElementToJSXString(
foo
) + ).toEqual(`
+ foo +
+
`); + }); }); diff --git a/index.js b/index.js index d1f0eb2e1..48755e3c7 100644 --- a/index.js +++ b/index.js @@ -11,8 +11,11 @@ export default function reactElementToJSXString(ReactElement) { } function toJSXString({ReactElement = null, lvl = 0, inline = false}) { - if (!isElement(ReactElement)) { - throw new Error('react-element-to-jsx-string: Expected a ReactElement'); + if (typeof ReactElement === 'string') { + return ReactElement; + } else if (!isElement(ReactElement)) { + throw new Error('react-element-to-jsx-string: Expected a ReactElement, ' + + 'got `' + (typeof ReactElement) + '`'); } let tagName; @@ -58,7 +61,7 @@ function toJSXString({ReactElement = null, lvl = 0, inline = false}) { .toArray(children) .map( recurse({lvl, inline}) - ); + ).join('\n' + spacer(lvl)); } if (!inline) { out += `\n`;