code: function setDefaultValue(node, type, value) {
    if (
    // Focused number inputs synchronize on blur. See ChangeEventPlugin.js
    type !== 'number' || node.ownerDocument.activeElement !== node) {
      if (value == null) {
        node.defaultValue = '' + node._wrapperState.initialValue;
      } else if (node.defaultValue !== '' + value) {
        node.defaultValue = '' + value;
      }
    }
  }
docs: In Chrome, assigning defaultValue to certain input types triggers input validation. For number inputs, the display value loses trailing decimal points. For email inputs, Chrome raises "The specified value <x> is not a valid email address".  Here we check to see if the defaultValue has actually changed, avoiding these problems when the user is inputting text  https://github.com/facebook/react/issues/7253