From 707170e6dc396c52cbb85e114a599f0d1c11dde9 Mon Sep 17 00:00:00 2001 From: Sumei Date: Thu, 14 Apr 2016 09:50:50 +0800 Subject: [PATCH 1/2] rebase #6345 --- .../classic/element/ReactElement.js | 26 ++++++------------- .../dom/shared/DOMPropertyOperations.js | 10 ------- src/renderers/dom/shared/ReactDOMDebugTool.js | 10 ++----- .../ReactDOMUnknownPropertyDevtool.js | 15 +++++------ 4 files changed, 17 insertions(+), 44 deletions(-) diff --git a/src/isomorphic/classic/element/ReactElement.js b/src/isomorphic/classic/element/ReactElement.js index 307bb4d5c88..285da571d2e 100644 --- a/src/isomorphic/classic/element/ReactElement.js +++ b/src/isomorphic/classic/element/ReactElement.js @@ -12,7 +12,8 @@ 'use strict'; var ReactCurrentOwner = require('ReactCurrentOwner'); - +var ReactDOMInstrumentation = require('ReactDOMInstrumentation'); +var assign = require('Object.assign'); var warning = require('warning'); var canDefineProperty = require('canDefineProperty'); @@ -126,13 +127,6 @@ ReactElement.createElement = function(type, config, children) { if (config != null) { if (__DEV__) { - warning( - /* eslint-disable no-proto */ - config.__proto__ == null || config.__proto__ === Object.prototype, - /* eslint-enable no-proto */ - 'React.createElement(...): Expected props argument to be a plain object. ' + - 'Properties defined in its prototype chain will be ignored.' - ); ref = !config.hasOwnProperty('ref') || Object.getOwnPropertyDescriptor(config, 'ref').get ? null : config.ref; key = !config.hasOwnProperty('key') || @@ -152,6 +146,11 @@ ReactElement.createElement = function(type, config, children) { } } + if(__DEV__) { + for (propName in config) { + ReactDOMInstrumentation.debugTool.onCreateElement(propName); + } + } // Children can be more than one argument, and those are transferred onto // the newly allocated props object. var childrenLength = arguments.length - 2; @@ -259,7 +258,7 @@ ReactElement.cloneElement = function(element, config, children) { var propName; // Original props are copied - var props = Object.assign({}, element.props); + var props = assign({}, element.props); // Reserved names are extracted var key = element.key; @@ -275,15 +274,6 @@ ReactElement.cloneElement = function(element, config, children) { var owner = element._owner; if (config != null) { - if (__DEV__) { - warning( - /* eslint-disable no-proto */ - config.__proto__ == null || config.__proto__ === Object.prototype, - /* eslint-enable no-proto */ - 'React.cloneElement(...): Expected props argument to be a plain object. ' + - 'Properties defined in its prototype chain will be ignored.' - ); - } if (config.ref !== undefined) { // Silently steal the ref from the parent. ref = config.ref; diff --git a/src/renderers/dom/shared/DOMPropertyOperations.js b/src/renderers/dom/shared/DOMPropertyOperations.js index 1ce9e29b753..352866c6d13 100644 --- a/src/renderers/dom/shared/DOMPropertyOperations.js +++ b/src/renderers/dom/shared/DOMPropertyOperations.js @@ -12,7 +12,6 @@ 'use strict'; var DOMProperty = require('DOMProperty'); -var ReactDOMInstrumentation = require('ReactDOMInstrumentation'); var ReactPerf = require('ReactPerf'); var quoteAttributeValueForBrowser = require('quoteAttributeValueForBrowser'); @@ -88,9 +87,6 @@ var DOMPropertyOperations = { * @return {?string} Markup string, or null if the property was invalid. */ createMarkupForProperty: function(name, value) { - if (__DEV__) { - ReactDOMInstrumentation.debugTool.onCreateMarkupForProperty(name, value); - } var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; if (propertyInfo) { @@ -134,9 +130,6 @@ var DOMPropertyOperations = { * @param {*} value */ setValueForProperty: function(node, name, value) { - if (__DEV__) { - ReactDOMInstrumentation.debugTool.onSetValueForProperty(node, name, value); - } var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; if (propertyInfo) { @@ -192,9 +185,6 @@ var DOMPropertyOperations = { * @param {string} name */ deleteValueForProperty: function(node, name) { - if (__DEV__) { - ReactDOMInstrumentation.debugTool.onDeleteValueForProperty(node, name); - } var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null; if (propertyInfo) { diff --git a/src/renderers/dom/shared/ReactDOMDebugTool.js b/src/renderers/dom/shared/ReactDOMDebugTool.js index 9fcc3763fad..3ea91786d43 100644 --- a/src/renderers/dom/shared/ReactDOMDebugTool.js +++ b/src/renderers/dom/shared/ReactDOMDebugTool.js @@ -50,14 +50,8 @@ var ReactDOMDebugTool = { } } }, - onCreateMarkupForProperty(name, value) { - emitEvent('onCreateMarkupForProperty', name, value); - }, - onSetValueForProperty(node, name, value) { - emitEvent('onSetValueForProperty', node, name, value); - }, - onDeleteValueForProperty(node, name) { - emitEvent('onDeleteValueForProperty', node, name); + onCreateElement(name) { + emitEvent('onCreateElement', name); }, }; diff --git a/src/renderers/dom/shared/devtools/ReactDOMUnknownPropertyDevtool.js b/src/renderers/dom/shared/devtools/ReactDOMUnknownPropertyDevtool.js index 5adc359063e..3d34b9d34d5 100644 --- a/src/renderers/dom/shared/devtools/ReactDOMUnknownPropertyDevtool.js +++ b/src/renderers/dom/shared/devtools/ReactDOMUnknownPropertyDevtool.js @@ -34,9 +34,14 @@ if (__DEV__) { return; } - warnedProperties[name] = true; var lowerCasedName = name.toLowerCase(); + if(EventPluginRegistry.possibleRegistrationNames[lowerCasedName] == name) { + return; + } + + warnedProperties[name] = true; + // data-* attributes should be lowercase; suggest the lowercase version var standardName = ( DOMProperty.isCustomAttribute(lowerCasedName) ? @@ -73,13 +78,7 @@ if (__DEV__) { } var ReactDOMUnknownPropertyDevtool = { - onCreateMarkupForProperty(name, value) { - warnUnknownProperty(name); - }, - onSetValueForProperty(node, name, value) { - warnUnknownProperty(name); - }, - onDeleteValueForProperty(node, name) { + onCreateElement(name) { warnUnknownProperty(name); }, }; From bb1587f1c519cef3b019493ce34938682826ac1f Mon Sep 17 00:00:00 2001 From: Sumei Date: Thu, 14 Apr 2016 09:53:07 +0800 Subject: [PATCH 2/2] make sure lint pass --- src/isomorphic/classic/element/ReactElement.js | 2 +- .../dom/shared/devtools/ReactDOMUnknownPropertyDevtool.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/isomorphic/classic/element/ReactElement.js b/src/isomorphic/classic/element/ReactElement.js index 285da571d2e..8d03a265df5 100644 --- a/src/isomorphic/classic/element/ReactElement.js +++ b/src/isomorphic/classic/element/ReactElement.js @@ -146,7 +146,7 @@ ReactElement.createElement = function(type, config, children) { } } - if(__DEV__) { + if (__DEV__) { for (propName in config) { ReactDOMInstrumentation.debugTool.onCreateElement(propName); } diff --git a/src/renderers/dom/shared/devtools/ReactDOMUnknownPropertyDevtool.js b/src/renderers/dom/shared/devtools/ReactDOMUnknownPropertyDevtool.js index 3d34b9d34d5..67378ea996d 100644 --- a/src/renderers/dom/shared/devtools/ReactDOMUnknownPropertyDevtool.js +++ b/src/renderers/dom/shared/devtools/ReactDOMUnknownPropertyDevtool.js @@ -36,7 +36,7 @@ if (__DEV__) { var lowerCasedName = name.toLowerCase(); - if(EventPluginRegistry.possibleRegistrationNames[lowerCasedName] == name) { + if (EventPluginRegistry.possibleRegistrationNames[lowerCasedName] === name) { return; }