Add enableAsyncSubtreeAPI to host config
Allows us to control this feature on a per-renderer basis
Andrew Clark committed
Apr 17, 2017 at 15:38 UTC
26d70fd3347b7c730644d32b70c4fa752a29a610
3 files changed
+7
-1
src/renderers/dom/fiber/ReactDOMFiber.js
+1
@@ -364,6 +364,7 @@ var DOMRenderer = ReactFiberReconciler({
364
scheduleDeferredCallback: ReactDOMFrameScheduling.rIC,
365
366
useSyncScheduling: !ReactDOMFeatureFlags.fiberAsyncScheduling,
367
+ enableAsyncSubtreeAPI: ReactDOMFeatureFlags.enableAsyncSubtreeAPI,
368
});
369
370
ReactGenericBatching.injection.injectFiberBatchedUpdates(
src/renderers/shared/fiber/ReactFiberReconciler.js
+1
@@ -115,6 +115,7 @@ export type HostConfig<T, P, I, TI, PI, C, CX, PL> = {
115
resetAfterCommit(): void,
116
117
useSyncScheduling?: boolean,
118
+ enableAsyncSubtreeAPI?: boolean,
119
};
120
121
export type Reconciler<C, I, TI> = {
src/renderers/shared/fiber/ReactFiberScheduler.js
+5
-1
@@ -169,6 +169,7 @@ module.exports = function<T, P, I, TI, PI, C, CX, PL>(
169
useSyncScheduling,
170
prepareForCommit,
171
resetAfterCommit,
172
+ enableAsyncSubtreeAPI,
173
} = config;
174
175
// The priority level to use when scheduling an update. We use NoWork to
@@ -1347,7 +1348,10 @@ module.exports = function<T, P, I, TI, PI, C, CX, PL>(
1348
function getPriorityContext(fiber: Fiber): PriorityLevel {
1349
let priorityLevel = priorityContext;
1350
if (priorityLevel === NoWork) {
1350
- if (!useSyncScheduling || fiber.contextTag & AsyncUpdates) {
1351
+ if (
1352
+ !useSyncScheduling ||
1353
+ (enableAsyncSubtreeAPI === true && fiber.contextTag & AsyncUpdates)
1354
+ ) {
1355
priorityLevel = LowPriority;
1356
} else {
1357
priorityLevel = SynchronousPriority;