diff --git a/src/renderers/shared/stack/reconciler/ReactDefaultBatchingStrategy.js b/src/renderers/shared/stack/reconciler/ReactDefaultBatchingStrategy.js index 904dc1f803c18..4022775d0da1a 100644 --- a/src/renderers/shared/stack/reconciler/ReactDefaultBatchingStrategy.js +++ b/src/renderers/shared/stack/reconciler/ReactDefaultBatchingStrategy.js @@ -60,9 +60,9 @@ var ReactDefaultBatchingStrategy = { // The code is written this way to avoid extra allocations if (alreadyBatchingUpdates) { - callback(a, b, c, d, e); + return callback(a, b, c, d, e); } else { - transaction.perform(callback, null, a, b, c, d, e); + return transaction.perform(callback, null, a, b, c, d, e); } }, }; diff --git a/src/renderers/shared/stack/reconciler/ReactUpdates.js b/src/renderers/shared/stack/reconciler/ReactUpdates.js index 2009fb3134726..9dec2241bb5fd 100644 --- a/src/renderers/shared/stack/reconciler/ReactUpdates.js +++ b/src/renderers/shared/stack/reconciler/ReactUpdates.js @@ -108,7 +108,7 @@ PooledClass.addPoolingTo(ReactUpdatesFlushTransaction); function batchedUpdates(callback, a, b, c, d, e) { ensureInjected(); - batchingStrategy.batchedUpdates(callback, a, b, c, d, e); + return batchingStrategy.batchedUpdates(callback, a, b, c, d, e); } /** diff --git a/src/renderers/shared/stack/reconciler/__tests__/ReactUpdates-test.js b/src/renderers/shared/stack/reconciler/__tests__/ReactUpdates-test.js index b94066f97ee6b..11ff043980b7b 100644 --- a/src/renderers/shared/stack/reconciler/__tests__/ReactUpdates-test.js +++ b/src/renderers/shared/stack/reconciler/__tests__/ReactUpdates-test.js @@ -1147,4 +1147,10 @@ describe('ReactUpdates', function() { ReactDOM.render(, document.createElement('div')); }); + it('unstable_batchedUpdates should return value from a callback', function() { + var result = ReactDOM.unstable_batchedUpdates(function() { + return 42; + }); + expect(result).toEqual(42); + }); });