diff --git a/src/renderers/dom/client/ReactMount.js b/src/renderers/dom/client/ReactMount.js index 899eb879fa..4c887777a8 100644 --- a/src/renderers/dom/client/ReactMount.js +++ b/src/renderers/dom/client/ReactMount.js @@ -11,6 +11,7 @@ 'use strict'; +var ClientReactRootIndex = require('ClientReactRootIndex'); var DOMProperty = require('DOMProperty'); var ReactBrowserEventEmitter = require('ReactBrowserEventEmitter'); var ReactCurrentOwner = require('ReactCurrentOwner'); @@ -727,7 +728,9 @@ var ReactMount = { } if (!reactRootID) { // No valid "reactRoot" ID found, create one. - reactRootID = ReactInstanceHandles.createReactRootID(); + reactRootID = ReactInstanceHandles.createReactRootID( + ClientReactRootIndex.createReactRootIndex() + ); } containersByReactRootID[reactRootID] = container; return reactRootID; diff --git a/src/renderers/dom/client/__tests__/ReactRenderDocument-test.js b/src/renderers/dom/client/__tests__/ReactRenderDocument-test.js index 0eca2cf014..fa7a60acd3 100644 --- a/src/renderers/dom/client/__tests__/ReactRenderDocument-test.js +++ b/src/renderers/dom/client/__tests__/ReactRenderDocument-test.js @@ -11,6 +11,9 @@ 'use strict'; +require('mock-modules') + .mock('ServerReactRootIndex'); + var React; var ReactDOM; var ReactDOMServer; @@ -32,6 +35,14 @@ describe('rendering React components at document', function() { beforeEach(function() { require('mock-modules').dumpCache(); + // Negative integer creator. So they won't get confused with + // the Client positive ids. + var ServerReactRootIndex = require('ServerReactRootIndex'); + var serverId = -1; + ServerReactRootIndex.createReactRootIndex.mockImplementation(function() { + return serverId--; + }); + React = require('React'); ReactDOM = require('ReactDOM'); ReactDOMServer = require('ReactDOMServer'); @@ -213,8 +224,8 @@ describe('rendering React components at document', function() { 'quirks by rendering at the document root. You should look for ' + 'environment dependent code in your components and ensure ' + 'the props are the same client and server side:\n' + - ' (client) data-reactid=".0.1">Hello worldGoodbye world' + ' (client) ata-reactid=".-1.1">Hello worldGoodbye world' ); }); diff --git a/src/renderers/dom/server/ReactServerRendering.js b/src/renderers/dom/server/ReactServerRendering.js index 9cfb3bfaf0..05e82f61bb 100644 --- a/src/renderers/dom/server/ReactServerRendering.js +++ b/src/renderers/dom/server/ReactServerRendering.js @@ -19,6 +19,7 @@ var ReactServerBatchingStrategy = require('ReactServerBatchingStrategy'); var ReactServerRenderingTransaction = require('ReactServerRenderingTransaction'); var ReactUpdates = require('ReactUpdates'); +var ServerReactRootIndex = require('ServerReactRootIndex'); var emptyObject = require('emptyObject'); var instantiateReactComponent = require('instantiateReactComponent'); @@ -38,7 +39,9 @@ function renderToString(element) { try { ReactUpdates.injection.injectBatchingStrategy(ReactServerBatchingStrategy); - var id = ReactInstanceHandles.createReactRootID(); + var id = ReactInstanceHandles.createReactRootID( + ServerReactRootIndex.createReactRootIndex() + ); transaction = ReactServerRenderingTransaction.getPooled(false); return transaction.perform(function() { @@ -70,7 +73,9 @@ function renderToStaticMarkup(element) { try { ReactUpdates.injection.injectBatchingStrategy(ReactServerBatchingStrategy); - var id = ReactInstanceHandles.createReactRootID(); + var id = ReactInstanceHandles.createReactRootID( + ServerReactRootIndex.createReactRootIndex() + ); transaction = ReactServerRenderingTransaction.getPooled(true); return transaction.perform(function() { diff --git a/src/renderers/dom/shared/ReactDefaultInjection.js b/src/renderers/dom/shared/ReactDefaultInjection.js index bea7540cf1..5c6dbb979a 100644 --- a/src/renderers/dom/shared/ReactDefaultInjection.js +++ b/src/renderers/dom/shared/ReactDefaultInjection.js @@ -13,7 +13,6 @@ var BeforeInputEventPlugin = require('BeforeInputEventPlugin'); var ChangeEventPlugin = require('ChangeEventPlugin'); -var ClientReactRootIndex = require('ClientReactRootIndex'); var DefaultEventPluginOrder = require('DefaultEventPluginOrder'); var EnterLeaveEventPlugin = require('EnterLeaveEventPlugin'); var ExecutionEnvironment = require('ExecutionEnvironment'); @@ -30,7 +29,6 @@ var ReactInstanceHandles = require('ReactInstanceHandles'); var ReactMount = require('ReactMount'); var ReactReconcileTransaction = require('ReactReconcileTransaction'); var SelectEventPlugin = require('SelectEventPlugin'); -var ServerReactRootIndex = require('ServerReactRootIndex'); var SimpleEventPlugin = require('SimpleEventPlugin'); var SVGDOMPropertyConfig = require('SVGDOMPropertyConfig'); @@ -90,12 +88,6 @@ function inject() { ReactDefaultBatchingStrategy ); - ReactInjection.RootIndex.injectCreateReactRootIndex( - ExecutionEnvironment.canUseDOM ? - ClientReactRootIndex.createReactRootIndex : - ServerReactRootIndex.createReactRootIndex - ); - ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment); if (__DEV__) { diff --git a/src/renderers/dom/shared/ReactInjection.js b/src/renderers/dom/shared/ReactInjection.js index 5508efec56..dc114c4661 100644 --- a/src/renderers/dom/shared/ReactInjection.js +++ b/src/renderers/dom/shared/ReactInjection.js @@ -19,7 +19,6 @@ var ReactEmptyComponent = require('ReactEmptyComponent'); var ReactBrowserEventEmitter = require('ReactBrowserEventEmitter'); var ReactNativeComponent = require('ReactNativeComponent'); var ReactPerf = require('ReactPerf'); -var ReactRootIndex = require('ReactRootIndex'); var ReactUpdates = require('ReactUpdates'); var ReactInjection = { @@ -31,7 +30,6 @@ var ReactInjection = { EventEmitter: ReactBrowserEventEmitter.injection, NativeComponent: ReactNativeComponent.injection, Perf: ReactPerf.injection, - RootIndex: ReactRootIndex.injection, Updates: ReactUpdates.injection, }; diff --git a/src/renderers/shared/reconciler/ReactInstanceHandles.js b/src/renderers/shared/reconciler/ReactInstanceHandles.js index 94bdc7ff31..8934da05f3 100644 --- a/src/renderers/shared/reconciler/ReactInstanceHandles.js +++ b/src/renderers/shared/reconciler/ReactInstanceHandles.js @@ -12,8 +12,6 @@ 'use strict'; -var ReactRootIndex = require('ReactRootIndex'); - var invariant = require('invariant'); var SEPARATOR = '.'; @@ -221,10 +219,11 @@ var ReactInstanceHandles = { /** * Constructs a React root ID + * @param {number} index A unique integer * @return {string} A React root ID. */ - createReactRootID: function() { - return getReactRootIDString(ReactRootIndex.createReactRootIndex()); + createReactRootID: function(index) { + return getReactRootIDString(index); }, /** diff --git a/src/renderers/shared/reconciler/ReactRootIndex.js b/src/renderers/shared/reconciler/ReactRootIndex.js deleted file mode 100644 index 33875edbfe..0000000000 --- a/src/renderers/shared/reconciler/ReactRootIndex.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Copyright 2013-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule ReactRootIndex - * @typechecks - */ - -'use strict'; - -var ReactRootIndexInjection = { - /** - * @param {function} _createReactRootIndex - */ - injectCreateReactRootIndex: function(_createReactRootIndex) { - ReactRootIndex.createReactRootIndex = _createReactRootIndex; - }, -}; - -var ReactRootIndex = { - createReactRootIndex: null, - injection: ReactRootIndexInjection, -}; - -module.exports = ReactRootIndex; diff --git a/src/test/ReactTestUtils.js b/src/test/ReactTestUtils.js index 7a368fb540..5a209ca7e2 100644 --- a/src/test/ReactTestUtils.js +++ b/src/test/ReactTestUtils.js @@ -11,6 +11,7 @@ 'use strict'; +var ClientReactRootIndex = require('ClientReactRootIndex'); var EventConstants = require('EventConstants'); var EventPluginHub = require('EventPluginHub'); var EventPropagators = require('EventPropagators'); @@ -425,7 +426,9 @@ ReactShallowRenderer.prototype._render = function(element, transaction, context) if (this._instance) { this._instance.receiveComponent(element, transaction, context); } else { - var rootID = ReactInstanceHandles.createReactRootID(); + var rootID = ReactInstanceHandles.createReactRootID( + ClientReactRootIndex.createReactRootIndex() + ); var instance = new ShallowComponentWrapper(element.type); instance.construct(element);