From 26731ea9671837899de80d7e71db0df93d5ca64f Mon Sep 17 00:00:00 2001 From: Andrew Clark Date: Sun, 30 Oct 2016 22:44:52 -0700 Subject: [PATCH] unstable_batchedUpdates should return value of callback --- src/renderers/dom/fiber/ReactDOMFiber.js | 4 ++-- src/renderers/shared/fiber/ReactFiberReconciler.js | 5 ++++- src/renderers/shared/fiber/ReactFiberScheduler.js | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/renderers/dom/fiber/ReactDOMFiber.js b/src/renderers/dom/fiber/ReactDOMFiber.js index 6d59e5aed7..08fd6d7c59 100644 --- a/src/renderers/dom/fiber/ReactDOMFiber.js +++ b/src/renderers/dom/fiber/ReactDOMFiber.js @@ -165,8 +165,8 @@ var ReactDOM = { return DOMRenderer.findHostInstance(component); }, - unstable_batchedUpdates(fn : Function) : void { - DOMRenderer.batchedUpdates(fn); + unstable_batchedUpdates(fn : () => A) : A { + return DOMRenderer.batchedUpdates(fn); }, }; diff --git a/src/renderers/shared/fiber/ReactFiberReconciler.js b/src/renderers/shared/fiber/ReactFiberReconciler.js index f14559dfa8..7708e04c59 100644 --- a/src/renderers/shared/fiber/ReactFiberReconciler.js +++ b/src/renderers/shared/fiber/ReactFiberReconciler.js @@ -68,7 +68,10 @@ export type Reconciler = { updateContainer(element : ReactElement, container : OpaqueNode) : void, unmountContainer(container : OpaqueNode) : void, performWithPriority(priorityLevel : PriorityLevel, fn : Function) : void, - batchedUpdates(fn: Function) : void, + /* eslint-disable no-undef */ + // FIXME: ESLint complains about type parameter + batchedUpdates(fn : () => A) : A, + /* eslint-enable no-undef */ // Used to extract the return value from the initial render. Legacy API. getPublicRootInstance(container : OpaqueNode) : (ReactComponent | TI | I | null), diff --git a/src/renderers/shared/fiber/ReactFiberScheduler.js b/src/renderers/shared/fiber/ReactFiberScheduler.js index dbd6d3e7ce..ca942f6269 100644 --- a/src/renderers/shared/fiber/ReactFiberScheduler.js +++ b/src/renderers/shared/fiber/ReactFiberScheduler.js @@ -681,11 +681,11 @@ module.exports = function(config : HostConfig) { } } - function batchedUpdates(fn: Function) { + function batchedUpdates(fn : () => A) : A { const prev = shouldBatchUpdates; shouldBatchUpdates = true; try { - fn(); + return fn(); } finally { shouldBatchUpdates = prev; }