Split message for deep numeric key warning too
Ben Alpert committed
May 13, 2015 at 15:23 UTC
0a3aa8493aa014668f5dd3bac30868c18397538e
1 file changed
+7
-3
src/classic/element/ReactElementValidator.js
+7
-3
@@ -116,13 +116,17 @@ function validateExplicitKey(element, parentType, deep) {
116
* @param {string} name Property name of the key.
117
* @param {ReactElement} element Component that requires a key.
118
* @param {*} parentType element's parent's type.
119
+ * @param {boolean} deep false if top-level collection, true if nested
120
*/
120
-function validatePropertyKey(name, element, parentType) {
121
+function validatePropertyKey(name, element, parentType, deep) {
122
if (!NUMERIC_PROPERTY_REGEX.test(name)) {
123
return;
124
}
125
warnAndMonitorForKeyUse(
125
- 'Child objects should have non-numeric keys so ordering is preserved.',
126
+ deep ?
127
+ 'Nested child objects should have non-numeric keys ' +
128
+ 'so ordering is preserved.' :
129
+ 'Child objects should have non-numeric keys so ordering is preserved.',
130
element,
131
parentType
132
);
@@ -226,7 +230,7 @@ function validateChildKeys(node, parentType, deep) {
230
var fragment = ReactFragment.extractIfFragment(node);
231
for (var key in fragment) {
232
if (fragment.hasOwnProperty(key)) {
229
- validatePropertyKey(key, fragment[key], parentType);
233
+ validatePropertyKey(key, fragment[key], parentType, deep);
234
validateChildKeys(fragment[key], parentType, true);
235
}
236
}