diff --git a/src/renderers/dom/fiber/ReactDOMFiber.js b/src/renderers/dom/fiber/ReactDOMFiber.js index cebe041481..42899b7b2d 100644 --- a/src/renderers/dom/fiber/ReactDOMFiber.js +++ b/src/renderers/dom/fiber/ReactDOMFiber.js @@ -196,8 +196,9 @@ var DOMRenderer = ReactFiberReconciler({ typeof props.children === 'string' || typeof props.children === 'number' ) { + const string = '' + props.children; const ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type, null); - validateDOMNesting(null, String(props.children), null, ownAncestorInfo); + validateDOMNesting(null, string, null, ownAncestorInfo); } parentNamespace = hostContextDev.namespace; } else { @@ -237,8 +238,9 @@ var DOMRenderer = ReactFiberReconciler({ typeof newProps.children === 'string' || typeof newProps.children === 'number' )) { + const string = '' + newProps.children; const ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type, null); - validateDOMNesting(null, String(newProps.children), null, ownAncestorInfo); + validateDOMNesting(null, string, null, ownAncestorInfo); } } return diffProperties(domElement, type, oldProps, newProps, rootContainerInstance); @@ -411,9 +413,9 @@ var ReactDOM = { } if (__DEV__) { - const isRootRenderedBySomeReact = Boolean(container._reactRootContainer); + const isRootRenderedBySomeReact = !!container._reactRootContainer; const rootEl = getReactRootElementInContainer(container); - const hasNonRootReactChild = Boolean(rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl)); + const hasNonRootReactChild = !!(rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl)); warning( !hasNonRootReactChild || diff --git a/src/renderers/dom/fiber/wrappers/ReactDOMFiberSelect.js b/src/renderers/dom/fiber/wrappers/ReactDOMFiberSelect.js index 88853b3014..6e874d85f0 100644 --- a/src/renderers/dom/fiber/wrappers/ReactDOMFiberSelect.js +++ b/src/renderers/dom/fiber/wrappers/ReactDOMFiberSelect.js @@ -134,7 +134,7 @@ var ReactDOMSelect = { var value = props.value; node._wrapperState = { initialValue: value != null ? value : props.defaultValue, - wasMultiple: Boolean(props.multiple), + wasMultiple: !!props.multiple, }; if ( @@ -153,11 +153,11 @@ var ReactDOMSelect = { didWarnValueDefaultValue = true; } - node.multiple = Boolean(props.multiple); + node.multiple = !!props.multiple; if (value != null) { - updateOptions(node, Boolean(props.multiple), value); + updateOptions(node, !!props.multiple, value); } else if (props.defaultValue != null) { - updateOptions(node, Boolean(props.multiple), props.defaultValue); + updateOptions(node, !!props.multiple, props.defaultValue); } }, @@ -168,18 +168,18 @@ var ReactDOMSelect = { node._wrapperState.initialValue = undefined; var wasMultiple = node._wrapperState.wasMultiple; - node._wrapperState.wasMultiple = Boolean(props.multiple); + node._wrapperState.wasMultiple = !!props.multiple; var value = props.value; if (value != null) { - updateOptions(node, Boolean(props.multiple), value); - } else if (wasMultiple !== Boolean(props.multiple)) { + updateOptions(node, !!props.multiple, value); + } else if (wasMultiple !== !!props.multiple) { // For simplicity, reapply `defaultValue` if `multiple` is toggled. if (props.defaultValue != null) { - updateOptions(node, Boolean(props.multiple), props.defaultValue); + updateOptions(node, !!props.multiple, props.defaultValue); } else { // Revert the select back to its default unselected state. - updateOptions(node, Boolean(props.multiple), props.multiple ? [] : ''); + updateOptions(node, !!props.multiple, props.multiple ? [] : ''); } } }, @@ -189,7 +189,7 @@ var ReactDOMSelect = { var value = props.value; if (value != null) { - updateOptions(node, Boolean(props.multiple), value); + updateOptions(node, !!props.multiple, value); } }, }; diff --git a/src/renderers/dom/shared/ReactBrowserEventEmitter.js b/src/renderers/dom/shared/ReactBrowserEventEmitter.js index a191a45b14..4e994d9a03 100644 --- a/src/renderers/dom/shared/ReactBrowserEventEmitter.js +++ b/src/renderers/dom/shared/ReactBrowserEventEmitter.js @@ -154,7 +154,7 @@ var topEventMapping = { /** * To ensure no conflicts with other potential React instances on the page */ -var topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2); +var topListenersIDKey = '_reactListenersID' + ('' + Math.random()).slice(2); function getListeningForDocument(mountAt) { // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty` diff --git a/src/renderers/dom/shared/ReactDOMComponentTree.js b/src/renderers/dom/shared/ReactDOMComponentTree.js index 78c543bea2..b843b9407a 100644 --- a/src/renderers/dom/shared/ReactDOMComponentTree.js +++ b/src/renderers/dom/shared/ReactDOMComponentTree.js @@ -31,7 +31,7 @@ var internalEventHandlersKey = '__reactEventHandlers$' + randomKey; */ function shouldPrecacheNode(node, nodeID) { return (node.nodeType === 1 && - node.getAttribute(ATTR_NAME) === String(nodeID)) || + node.getAttribute(ATTR_NAME) === ('' + nodeID)) || (node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ') || (node.nodeType === 8 && diff --git a/src/renderers/dom/shared/validateDOMNesting.js b/src/renderers/dom/shared/validateDOMNesting.js index 8fa3216f70..a0c2c74349 100644 --- a/src/renderers/dom/shared/validateDOMNesting.js +++ b/src/renderers/dom/shared/validateDOMNesting.js @@ -400,7 +400,7 @@ if (__DEV__) { childTag, ancestorInstance, ancestorTag, - Boolean(invalidParent) + !!invalidParent ) + '.'; } else { addendum = getCurrentFiberStackAddendum(); diff --git a/src/renderers/dom/stack/client/ReactDOMComponent.js b/src/renderers/dom/stack/client/ReactDOMComponent.js index 9fd3a45f92..035726db6e 100644 --- a/src/renderers/dom/stack/client/ReactDOMComponent.js +++ b/src/renderers/dom/stack/client/ReactDOMComponent.js @@ -185,7 +185,7 @@ if (__DEV__) { return; } - validateDOMNesting(null, String(content), this, this._ancestorInfo); + validateDOMNesting(null, '' + content, this, this._ancestorInfo); this._contentDebugID = contentDebugID; if (hasExistingContent) { ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content); diff --git a/src/renderers/dom/stack/client/ReactMount.js b/src/renderers/dom/stack/client/ReactMount.js index a1554d81bd..afd78bf317 100644 --- a/src/renderers/dom/stack/client/ReactMount.js +++ b/src/renderers/dom/stack/client/ReactMount.js @@ -440,7 +440,7 @@ var ReactMount = { callback === null || typeof callback === 'function', 'render(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', - String(callback) + '' + callback ); } if (!React.isValidElement(nextElement)) { diff --git a/src/renderers/dom/stack/client/wrappers/ReactDOMSelect.js b/src/renderers/dom/stack/client/wrappers/ReactDOMSelect.js index 6191b4999b..3bde1212c0 100644 --- a/src/renderers/dom/stack/client/wrappers/ReactDOMSelect.js +++ b/src/renderers/dom/stack/client/wrappers/ReactDOMSelect.js @@ -135,7 +135,7 @@ var ReactDOMSelect = { inst._wrapperState = { initialValue: value != null ? value : props.defaultValue, listeners: null, - wasMultiple: Boolean(props.multiple), + wasMultiple: !!props.multiple, }; if ( @@ -169,18 +169,18 @@ var ReactDOMSelect = { inst._wrapperState.initialValue = undefined; var wasMultiple = inst._wrapperState.wasMultiple; - inst._wrapperState.wasMultiple = Boolean(props.multiple); + inst._wrapperState.wasMultiple = !!props.multiple; var value = props.value; if (value != null) { - updateOptions(inst, Boolean(props.multiple), value); - } else if (wasMultiple !== Boolean(props.multiple)) { + updateOptions(inst, !!props.multiple, value); + } else if (wasMultiple !== !!props.multiple) { // For simplicity, reapply `defaultValue` if `multiple` is toggled. if (props.defaultValue != null) { - updateOptions(inst, Boolean(props.multiple), props.defaultValue); + updateOptions(inst, !!props.multiple, props.defaultValue); } else { // Revert the select back to its default unselected state. - updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : ''); + updateOptions(inst, !!props.multiple, props.multiple ? [] : ''); } } }, @@ -191,7 +191,7 @@ var ReactDOMSelect = { var value = props.value; if (value != null) { - updateOptions(inst, Boolean(props.multiple), value); + updateOptions(inst, !!props.multiple, value); } } }, diff --git a/src/renderers/shared/fiber/ReactChildFiber.js b/src/renderers/shared/fiber/ReactChildFiber.js index 79f80c9e40..57095c921e 100644 --- a/src/renderers/shared/fiber/ReactChildFiber.js +++ b/src/renderers/shared/fiber/ReactChildFiber.js @@ -95,7 +95,7 @@ function coerceRef(current: Fiber | null, element: ReactElement) { 'bug in React. Please file an issue.', mixedRef ); - const stringRef = String(mixedRef); + const stringRef = '' + mixedRef; // Check if previous string ref matches new string ref if (current !== null && current.ref !== null && current.ref._stringRef === stringRef) { return current.ref; @@ -117,7 +117,8 @@ function coerceRef(current: Fiber | null, element: ReactElement) { function throwOnInvalidObjectType(returnFiber : Fiber, newChild : Object) { if (returnFiber.type !== 'textarea') { - const childrenString = String(newChild); + // $FlowFixMe - Intentional cast to string + const childrenString = '' + newChild; let addendum = ''; if (__DEV__) { addendum = diff --git a/src/renderers/shared/fiber/ReactFiberClassComponent.js b/src/renderers/shared/fiber/ReactFiberClassComponent.js index 2856279537..15bd45bba4 100644 --- a/src/renderers/shared/fiber/ReactFiberClassComponent.js +++ b/src/renderers/shared/fiber/ReactFiberClassComponent.js @@ -47,7 +47,8 @@ if (__DEV__) { '%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, - String(callback) + // $FlowFixMe - Intentional cast to string + '' + callback ); }; } diff --git a/src/renderers/shared/fiber/ReactFiberReconciler.js b/src/renderers/shared/fiber/ReactFiberReconciler.js index 3f910aa1d9..2aa797ffb4 100644 --- a/src/renderers/shared/fiber/ReactFiberReconciler.js +++ b/src/renderers/shared/fiber/ReactFiberReconciler.js @@ -167,7 +167,8 @@ module.exports = function( callback === null || typeof callback === 'function', 'render(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', - String(callback) + // $FlowFixMe - Intentional cast to string + '' + callback ); } addTopLevelUpdate(current, nextState, callback, priorityLevel); diff --git a/src/renderers/shared/fiber/ReactFiberScheduler.js b/src/renderers/shared/fiber/ReactFiberScheduler.js index 8ab6ee177f..3f23452a0e 100644 --- a/src/renderers/shared/fiber/ReactFiberScheduler.js +++ b/src/renderers/shared/fiber/ReactFiberScheduler.js @@ -776,7 +776,7 @@ module.exports = function(config : HostConfig(config : HostConfig(config : HostConfig