From cb8923dc1f940448292d68c07ba58ef2cb780aa7 Mon Sep 17 00:00:00 2001 From: Juho Teperi Date: Wed, 14 Mar 2018 00:31:55 +0200 Subject: [PATCH] Use object bracket access test for RESERVED_PROPS - Should be faster - Google Closure Compiler will optimize away static properties from objects if properties aren't accessed dynamically. Using bracket access will make Closure to keep these properties in optimized code. --- packages/react-dom/src/server/ReactPartialRenderer.js | 10 +++++----- packages/react/src/ReactElement.js | 10 ++-------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/packages/react-dom/src/server/ReactPartialRenderer.js b/packages/react-dom/src/server/ReactPartialRenderer.js index b7742df2f6b4..399f0fe973e0 100644 --- a/packages/react-dom/src/server/ReactPartialRenderer.js +++ b/packages/react-dom/src/server/ReactPartialRenderer.js @@ -310,10 +310,10 @@ function processContext(type, context) { const STYLE = 'style'; const RESERVED_PROPS = { - children: null, - dangerouslySetInnerHTML: null, - suppressContentEditableWarning: null, - suppressHydrationWarning: null, + children: true, + dangerouslySetInnerHTML: true, + suppressContentEditableWarning: true, + suppressHydrationWarning: true, }; function createOpenTagMarkup( @@ -339,7 +339,7 @@ function createOpenTagMarkup( } let markup = null; if (isCustomComponent(tagLowercase, props)) { - if (!RESERVED_PROPS.hasOwnProperty(propKey)) { + if (!RESERVED_PROPS[propKey]) { markup = createMarkupForCustomAttribute(propKey, propValue); } } else { diff --git a/packages/react/src/ReactElement.js b/packages/react/src/ReactElement.js index 0594412fa78f..2f096001168c 100644 --- a/packages/react/src/ReactElement.js +++ b/packages/react/src/ReactElement.js @@ -190,10 +190,7 @@ export function createElement(type, config, children) { source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object for (propName in config) { - if ( - hasOwnProperty.call(config, propName) && - !RESERVED_PROPS.hasOwnProperty(propName) - ) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS[propName]) { props[propName] = config[propName]; } } @@ -324,10 +321,7 @@ export function cloneElement(element, config, children) { defaultProps = element.type.defaultProps; } for (propName in config) { - if ( - hasOwnProperty.call(config, propName) && - !RESERVED_PROPS.hasOwnProperty(propName) - ) { + if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS[propName]) { if (config[propName] === undefined && defaultProps !== undefined) { // Resolve default props props[propName] = defaultProps[propName];