diff --git a/test/__tests__/create-element-to-jsx-test.js b/test/__tests__/create-element-to-jsx-test.js index 874f5a25..cca4b2e5 100644 --- a/test/__tests__/create-element-to-jsx-test.js +++ b/test/__tests__/create-element-to-jsx-test.js @@ -27,6 +27,8 @@ describe('create-element-to-jsx', () => { test('create-element-to-jsx', 'create-element-to-jsx-children-map'); + test('create-element-to-jsx', 'create-element-to-jsx-children-mixed-empty-string'); + test('create-element-to-jsx', 'create-element-to-jsx-spread'); test('create-element-to-jsx', 'create-element-to-jsx-no-react'); diff --git a/test/create-element-to-jsx-children-mixed-empty-string.js b/test/create-element-to-jsx-children-mixed-empty-string.js new file mode 100644 index 00000000..0e521fef --- /dev/null +++ b/test/create-element-to-jsx-children-mixed-empty-string.js @@ -0,0 +1,11 @@ +var React = require('react'); + +a = 'foo'; + +React.createElement( + 'div', + null, + a, + ' ', + a +); diff --git a/test/create-element-to-jsx-children-mixed-empty-string.output.js b/test/create-element-to-jsx-children-mixed-empty-string.output.js new file mode 100644 index 00000000..3b664238 --- /dev/null +++ b/test/create-element-to-jsx-children-mixed-empty-string.output.js @@ -0,0 +1,5 @@ +var React = require('react'); + +a = 'foo'; + +
{a} {a}
; diff --git a/transforms/create-element-to-jsx.js b/transforms/create-element-to-jsx.js index 9a946ce0..5562f7e4 100644 --- a/transforms/create-element-to-jsx.js +++ b/transforms/create-element-to-jsx.js @@ -41,8 +41,8 @@ module.exports = function(file, api, options) { const attributes = convertObjectExpressionToJSXAttributes(props); const children = node.value.arguments.slice(2).map((child, index) => { - if (child.type === 'Literal') { - return j.literal(child.value); + if (child.type === 'Literal' && typeof child.value === 'string') { + return j.jsxText(child.value); } else if (child.type === 'CallExpression' && child.callee.object.name === 'React' && child.callee.property.name === 'createElement') {