@samitouri / QOS-React-2 / commits / f30fb748f8

Fix ReactMarkupChecksum.addChecksumToMarkup() adds checksum to comments

`ReactMarkupChecksum.addChecksumToMarkup()` should not add checksum to comment markup, which is generated from components returns null. This fixes #6209.

Jaeho Lee committed Mar 10, 2016 at 17:21 UTC f30fb748f81693fbf9e94f64d0313ca103e3295e
2 files changed +21 -5
src/renderers/dom/server/ReactMarkupChecksum.js
+11 -5
@@ -14,6 +14,8 @@
14 var adler32 = require('adler32');
15
16 var TAG_END = /\/?>/;
17 +var COMMENT_START = /^<\!\-\-/;
18 +
19
20 var ReactMarkupChecksum = {
21 CHECKSUM_ATTR_NAME: 'data-react-checksum',
@@ -25,11 +27,15 @@ var ReactMarkupChecksum = {
27 addChecksumToMarkup: function(markup) {
28 var checksum = adler32(markup);
29
28 - // Add checksum (handle both parent tags and self-closing tags)
29 - return markup.replace(
30 - TAG_END,
31 - ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '="' + checksum + '"$&'
32 - );
30 + // Add checksum (handle both parent tags, comments and self-closing tags)
31 + if (markup.test(COMMENT_START)) {
32 + return markup;
33 + } else {
34 + return markup.replace(
35 + TAG_END,
36 + ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '="' + checksum + '"$&'
37 + );
38 + }
39 },
40
41 /**
src/renderers/dom/server/__tests__/ReactServerRendering-test.js
+10
@@ -74,6 +74,16 @@ describe('ReactServerRendering', function() {
74 );
75 });
76
77 + it('should generate comment markup for component returns null', function() {
78 + var NullComponent = React.createClass({
79 + render: function() {
80 + return null;
81 + },
82 + });
83 + var response = ReactServerRendering.renderToString(<NullComponent />);
84 + expect(response).toBe('<!-- react-empty: 1 -->');
85 + });
86 +
87 it('should not register event listeners', function() {
88 var EventPluginHub = require('EventPluginHub');
89 var cb = jest.genMockFn();