From d944d3f9419ee7e57afc2865dcfdf2d092111cd5 Mon Sep 17 00:00:00 2001 From: JD Isaacks Date: Tue, 23 Jun 2015 15:57:47 -0400 Subject: [PATCH] Prevent creating invalid closing tags fixes #2756 --- src/renderers/dom/shared/ReactDOMComponent.js | 6 +++--- .../dom/shared/__tests__/ReactDOMComponent-test.js | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/renderers/dom/shared/ReactDOMComponent.js b/src/renderers/dom/shared/ReactDOMComponent.js index e4d7fe6bf1..9f3af5cfc0 100644 --- a/src/renderers/dom/shared/ReactDOMComponent.js +++ b/src/renderers/dom/shared/ReactDOMComponent.js @@ -438,7 +438,7 @@ function isCustomComponent(tagName, props) { */ function ReactDOMComponent(tag) { validateDangerousTag(tag); - this._tag = tag; + this._tag = tag.toLowerCase(); this._renderedChildren = null; this._previousStyle = null; this._previousStyleCopy = null; @@ -533,7 +533,7 @@ ReactDOMComponent.Mixin = { if (!tagContent && omittedCloseTags[this._tag]) { return tagOpen + '/>'; } - return tagOpen + '>' + tagContent + ''; + return tagOpen + '>' + tagContent + ''; }, /** @@ -550,7 +550,7 @@ ReactDOMComponent.Mixin = { * @return {string} Markup of opening tag. */ _createOpenTagMarkupAndPutListeners: function(transaction, props) { - var ret = '<' + this._tag; + var ret = '<' + this._currentElement.type; for (var propKey in props) { if (!props.hasOwnProperty(propKey)) { diff --git a/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js b/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js index d5c36742d3..d658a86237 100644 --- a/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js +++ b/src/renderers/dom/shared/__tests__/ReactDOMComponent-test.js @@ -452,6 +452,16 @@ describe('ReactDOMComponent', function() { }; }); + it('should not duplicate uppercased selfclosing tags', function() { + var Container = React.createClass({ + render: function() { + return React.createElement('BR', null); + }, + }); + var returnedValue = React.renderToString(); + expect(returnedValue).not.toContain('
'); + }); + it('should warn against children for void elements', function() { spyOn(console, 'error');