@samitouri / QOS-React-2 / commits / 45f8837e35

Don't wrap values with ReactTextComponent in traverseAllChildren

Andreas Svensson committed Aug 3, 2014 at 16:58 UTC 45f8837e350f72cb905dddfb3cec505cc26fc0df
2 files changed +40 -34
src/utils/flattenChildren.js
+14 -1
@@ -18,6 +18,8 @@
18
19 "use strict";
20
21 +var ReactTextComponent = require('ReactTextComponent');
22 +
23 var traverseAllChildren = require('traverseAllChildren');
24 var warning = require('warning');
25
@@ -38,7 +40,18 @@ function flattenSingleChildIntoContext(traverseContext, child, name) {
40 name
41 );
42 if (keyUnique && child != null) {
41 - result[name] = child;
43 + var type = typeof child;
44 + var normalizedValue;
45 +
46 + if (type === 'string') {
47 + normalizedValue = ReactTextComponent(child);
48 + } else if (type === 'number') {
49 + normalizedValue = ReactTextComponent('' + child);
50 + } else {
51 + normalizedValue = child;
52 + }
53 +
54 + result[name] = normalizedValue;
55 }
56 }
57
src/utils/traverseAllChildren.js
+26 -33
@@ -20,7 +20,6 @@
20
21 var ReactDescriptor = require('ReactDescriptor');
22 var ReactInstanceHandles = require('ReactInstanceHandles');
23 -var ReactTextComponent = require('ReactTextComponent');
23
24 var invariant = require('invariant');
25
@@ -98,16 +97,17 @@ function wrapUserProvidedKey(key) {
97 */
98 var traverseAllChildrenImpl =
99 function(children, nameSoFar, indexSoFar, callback, traverseContext) {
100 + var nextName, nextIndex;
101 var subtreeCount = 0; // Count of children found in the current subtree.
102 if (Array.isArray(children)) {
103 for (var i = 0; i < children.length; i++) {
104 var child = children[i];
105 - var nextName = (
105 + nextName = (
106 nameSoFar +
107 (nameSoFar ? SUBSEPARATOR : SEPARATOR) +
108 getComponentKey(child, i)
109 );
110 - var nextIndex = indexSoFar + subtreeCount;
110 + nextIndex = indexSoFar + subtreeCount;
111 subtreeCount += traverseAllChildrenImpl(
112 child,
113 nextName,
@@ -127,39 +127,32 @@ var traverseAllChildrenImpl =
127 // All of the above are perceived as null.
128 callback(traverseContext, null, storageName, indexSoFar);
129 subtreeCount = 1;
130 - } else if (ReactDescriptor.isValidDescriptor(children)) {
130 + } else if (type === 'string' || type === 'number' ||
131 + ReactDescriptor.isValidDescriptor(children)) {
132 callback(traverseContext, children, storageName, indexSoFar);
133 subtreeCount = 1;
133 - } else {
134 - if (type === 'object') {
135 - invariant(
136 - !children || children.nodeType !== 1,
137 - 'traverseAllChildren(...): Encountered an invalid child; DOM ' +
138 - 'elements are not valid children of React components.'
139 - );
140 - for (var key in children) {
141 - if (children.hasOwnProperty(key)) {
142 - subtreeCount += traverseAllChildrenImpl(
143 - children[key],
144 - (
145 - nameSoFar + (nameSoFar ? SUBSEPARATOR : SEPARATOR) +
146 - wrapUserProvidedKey(key) + SUBSEPARATOR +
147 - getComponentKey(children[key], 0)
148 - ),
149 - indexSoFar + subtreeCount,
150 - callback,
151 - traverseContext
152 - );
153 - }
134 + } else if (type === 'object') {
135 + invariant(
136 + !children || children.nodeType !== 1,
137 + 'traverseAllChildren(...): Encountered an invalid child; DOM ' +
138 + 'elements are not valid children of React components.'
139 + );
140 + for (var key in children) {
141 + if (children.hasOwnProperty(key)) {
142 + nextName = (
143 + nameSoFar + (nameSoFar ? SUBSEPARATOR : SEPARATOR) +
144 + wrapUserProvidedKey(key) + SUBSEPARATOR +
145 + getComponentKey(children[key], 0)
146 + );
147 + nextIndex = indexSoFar + subtreeCount;
148 + subtreeCount += traverseAllChildrenImpl(
149 + children[key],
150 + nextName,
151 + nextIndex,
152 + callback,
153 + traverseContext
154 + );
155 }
155 - } else if (type === 'string') {
156 - var normalizedText = ReactTextComponent(children);
157 - callback(traverseContext, normalizedText, storageName, indexSoFar);
158 - subtreeCount += 1;
159 - } else if (type === 'number') {
160 - var normalizedNumber = ReactTextComponent('' + children);
161 - callback(traverseContext, normalizedNumber, storageName, indexSoFar);
162 - subtreeCount += 1;
156 }
157 }
158 }