From e67ff7ee78620448badba2cf8ac3af6ee2893d6f Mon Sep 17 00:00:00 2001 From: Sebastian Markbage Date: Mon, 2 Feb 2015 18:15:31 -0800 Subject: [PATCH] Expose ReactReconciler This can be used by devtools to monkey patch the reconciler and therefore get notified whenever any internal instance is updated. --- src/browser/ui/React.js | 9 ++------- src/core/ReactReconciler.js | 14 ++++++++++++++ src/core/ReactUpdates.js | 7 ++++++- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/browser/ui/React.js b/src/browser/ui/React.js index 4596ac9f17..1494aa171a 100644 --- a/src/browser/ui/React.js +++ b/src/browser/ui/React.js @@ -13,7 +13,6 @@ 'use strict'; -var DOMPropertyOperations = require('DOMPropertyOperations'); var EventPluginUtils = require('EventPluginUtils'); var ReactChildren = require('ReactChildren'); var ReactComponent = require('ReactComponent'); @@ -23,14 +22,13 @@ var ReactCurrentOwner = require('ReactCurrentOwner'); var ReactElement = require('ReactElement'); var ReactElementValidator = require('ReactElementValidator'); var ReactDOM = require('ReactDOM'); -var ReactDOMComponent = require('ReactDOMComponent'); var ReactDOMTextComponent = require('ReactDOMTextComponent'); var ReactDefaultInjection = require('ReactDefaultInjection'); var ReactInstanceHandles = require('ReactInstanceHandles'); var ReactMount = require('ReactMount'); -var ReactMultiChild = require('ReactMultiChild'); var ReactPerf = require('ReactPerf'); var ReactPropTypes = require('ReactPropTypes'); +var ReactReconciler = require('ReactReconciler'); var ReactServerRendering = require('ReactServerRendering'); var assign = require('Object.assign'); @@ -89,13 +87,10 @@ if ( typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') { __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({ - // TODO: Inject a hook for notifying devtools of updates CurrentOwner: ReactCurrentOwner, - DOMComponent: ReactDOMComponent, - DOMPropertyOperations: DOMPropertyOperations, InstanceHandles: ReactInstanceHandles, Mount: ReactMount, - MultiChild: ReactMultiChild, + Reconciler: ReactReconciler, TextComponent: ReactDOMTextComponent }); } diff --git a/src/core/ReactReconciler.js b/src/core/ReactReconciler.js index ad25a95bff..55380f7d04 100644 --- a/src/core/ReactReconciler.js +++ b/src/core/ReactReconciler.js @@ -100,6 +100,20 @@ var ReactReconciler = { if (refsChanged) { transaction.getReactMountReady().enqueue(attachRefs, internalInstance); } + }, + + /** + * Flush any dirty changes in a component. + * + * @param {ReactComponent} internalInstance + * @param {ReactReconcileTransaction} transaction + * @internal + */ + performUpdateIfNecessary: function( + internalInstance, + transaction + ) { + internalInstance.performUpdateIfNecessary(transaction); } }; diff --git a/src/core/ReactUpdates.js b/src/core/ReactUpdates.js index e7ac287729..1c7aea1a13 100644 --- a/src/core/ReactUpdates.js +++ b/src/core/ReactUpdates.js @@ -15,6 +15,7 @@ var CallbackQueue = require('CallbackQueue'); var PooledClass = require('PooledClass'); var ReactCurrentOwner = require('ReactCurrentOwner'); var ReactPerf = require('ReactPerf'); +var ReactReconciler = require('ReactReconciler'); var Transaction = require('Transaction'); var assign = require('Object.assign'); @@ -146,7 +147,11 @@ function runBatchedUpdates(transaction) { // stash the callbacks first var callbacks = component._pendingCallbacks; component._pendingCallbacks = null; - component.performUpdateIfNecessary(transaction.reconcileTransaction); + + ReactReconciler.performUpdateIfNecessary( + component, + transaction.reconcileTransaction + ); if (callbacks) { for (var j = 0; j < callbacks.length; j++) {