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++) {