@samitouri / QOS-React-2 / commits / e67ff7ee78

Expose ReactReconciler

This can be used by devtools to monkey patch the reconciler and therefore get notified whenever any internal instance is updated.

Sebastian Markbage committed Feb 2, 2015 at 18:15 UTC e67ff7ee78620448badba2cf8ac3af6ee2893d6f
3 files changed +22 -8
src/browser/ui/React.js
+2 -7
@@ -13,7 +13,6 @@
13
14 'use strict';
15
16 -var DOMPropertyOperations = require('DOMPropertyOperations');
16 var EventPluginUtils = require('EventPluginUtils');
17 var ReactChildren = require('ReactChildren');
18 var ReactComponent = require('ReactComponent');
@@ -23,14 +22,13 @@ var ReactCurrentOwner = require('ReactCurrentOwner');
22 var ReactElement = require('ReactElement');
23 var ReactElementValidator = require('ReactElementValidator');
24 var ReactDOM = require('ReactDOM');
26 -var ReactDOMComponent = require('ReactDOMComponent');
25 var ReactDOMTextComponent = require('ReactDOMTextComponent');
26 var ReactDefaultInjection = require('ReactDefaultInjection');
27 var ReactInstanceHandles = require('ReactInstanceHandles');
28 var ReactMount = require('ReactMount');
31 -var ReactMultiChild = require('ReactMultiChild');
29 var ReactPerf = require('ReactPerf');
30 var ReactPropTypes = require('ReactPropTypes');
31 +var ReactReconciler = require('ReactReconciler');
32 var ReactServerRendering = require('ReactServerRendering');
33
34 var assign = require('Object.assign');
@@ -89,13 +87,10 @@ if (
87 typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
88 typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {
89 __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({
92 - // TODO: Inject a hook for notifying devtools of updates
90 CurrentOwner: ReactCurrentOwner,
94 - DOMComponent: ReactDOMComponent,
95 - DOMPropertyOperations: DOMPropertyOperations,
91 InstanceHandles: ReactInstanceHandles,
92 Mount: ReactMount,
98 - MultiChild: ReactMultiChild,
93 + Reconciler: ReactReconciler,
94 TextComponent: ReactDOMTextComponent
95 });
96 }
src/core/ReactReconciler.js
+14
@@ -100,6 +100,20 @@ var ReactReconciler = {
100 if (refsChanged) {
101 transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
102 }
103 + },
104 +
105 + /**
106 + * Flush any dirty changes in a component.
107 + *
108 + * @param {ReactComponent} internalInstance
109 + * @param {ReactReconcileTransaction} transaction
110 + * @internal
111 + */
112 + performUpdateIfNecessary: function(
113 + internalInstance,
114 + transaction
115 + ) {
116 + internalInstance.performUpdateIfNecessary(transaction);
117 }
118
119 };
src/core/ReactUpdates.js
+6 -1
@@ -15,6 +15,7 @@ var CallbackQueue = require('CallbackQueue');
15 var PooledClass = require('PooledClass');
16 var ReactCurrentOwner = require('ReactCurrentOwner');
17 var ReactPerf = require('ReactPerf');
18 +var ReactReconciler = require('ReactReconciler');
19 var Transaction = require('Transaction');
20
21 var assign = require('Object.assign');
@@ -146,7 +147,11 @@ function runBatchedUpdates(transaction) {
147 // stash the callbacks first
148 var callbacks = component._pendingCallbacks;
149 component._pendingCallbacks = null;
149 - component.performUpdateIfNecessary(transaction.reconcileTransaction);
150 +
151 + ReactReconciler.performUpdateIfNecessary(
152 + component,
153 + transaction.reconcileTransaction
154 + );
155
156 if (callbacks) {
157 for (var j = 0; j < callbacks.length; j++) {