Prevent NaN props from triggering warnings
Previously, `checkAndWarnForMutatedProps` would flag `NaN` props as having been mutated, because `NaN !== NaN`. This prevents that warning from being emitted by explicitly checking for `NaN`s.
Harry Marr committed
Feb 13, 2015 at 21:45 UTC
198aabaafbe6dfe50be6b1624d1626b0cc91d974
1 file changed
+8
-2
src/classic/element/ReactElementValidator.js
+8
-2
@@ -312,8 +312,14 @@ function checkAndWarnForMutatedProps(element) {
312
313
for (var propName in props) {
314
if (props.hasOwnProperty(propName)) {
315
- if (!originalProps.hasOwnProperty(propName) ||
316
- originalProps[propName] !== props[propName]) {
315
+ var valueChanged = originalProps[propName] !== props[propName];
316
+ // Necessary because NaN !== NaN
317
+ if (typeof originalProps[propName] === 'number' &&
318
+ typeof props[propName] === 'number' &&
319
+ isNaN(originalProps[propName]) && isNaN(props[propName])) {
320
+ valueChanged = false;
321
+ }
322
+ if (!originalProps.hasOwnProperty(propName) || valueChanged) {
323
warnForPropsMutation(propName, element);
324
325
// Copy over the new value so that the two props objects match again