diff --git a/src/babel/transformation/helpers/build-react-transformer.js b/src/babel/transformation/helpers/build-react-transformer.js index b8c0e9a79d..e21b54e390 100644 --- a/src/babel/transformation/helpers/build-react-transformer.js +++ b/src/babel/transformation/helpers/build-react-transformer.js @@ -57,6 +57,8 @@ export default function (exports, opts) { exports.JSXOpeningElement = { exit(node, parent, scope, file) { + parent.children = react.buildChildren(parent); + var tagExpr = node.name; var args = []; @@ -144,10 +146,6 @@ export default function (exports, opts) { }; exports.JSXElement = { - enter(node) { - node.children = react.buildChildren(node); - }, - exit(node) { var callExpr = node.openingElement; diff --git a/src/babel/transformation/helpers/react.js b/src/babel/transformation/helpers/react.js index 74a4705320..5e0e824d18 100644 --- a/src/babel/transformation/helpers/react.js +++ b/src/babel/transformation/helpers/react.js @@ -34,9 +34,8 @@ function cleanJSXElementLiteralChild(child, args) { var lines = child.value.split(/\r\n|\n|\r/); var lastNonEmptyLine = 0; - var i; - for (i = 0; i < lines.length; i++) { + for (let i = 0; i < lines.length; i++) { if (lines[i].match(/[^ \t]/)) { lastNonEmptyLine = i; } @@ -44,7 +43,7 @@ function cleanJSXElementLiteralChild(child, args) { var str = ""; - for (i = 0; i < lines.length; i++) { + for (let i = 0; i < lines.length; i++) { var line = lines[i]; var isFirstLine = i === 0; diff --git a/test/core/fixtures/transformation/react/should-handle-attributed-elements/actual.js b/test/core/fixtures/transformation/react/should-handle-attributed-elements/actual.js new file mode 100644 index 0000000000..e179659161 --- /dev/null +++ b/test/core/fixtures/transformation/react/should-handle-attributed-elements/actual.js @@ -0,0 +1,11 @@ +var HelloMessage = React.createClass({ + render: function() { + return
Hello {this.props.name}
; + } +}); + +React.render( + Sebastian + +} />, mountNode); diff --git a/test/core/fixtures/transformation/react/should-handle-attributed-elements/expected.js b/test/core/fixtures/transformation/react/should-handle-attributed-elements/expected.js new file mode 100644 index 0000000000..7b386d4a3e --- /dev/null +++ b/test/core/fixtures/transformation/react/should-handle-attributed-elements/expected.js @@ -0,0 +1,18 @@ +var HelloMessage = React.createClass({ + displayName: "HelloMessage", + + render: function render() { + return React.createElement( + "div", + null, + "Hello ", + this.props.name + ); + } +}); + +React.render(React.createElement(HelloMessage, { name: React.createElement( + "span", + null, + "Sebastian" + ) }), mountNode);