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
}