diff --git a/src/renderers/art/ReactARTStack.js b/src/renderers/art/ReactARTStack.js index 308ee958cf..db1d22a885 100644 --- a/src/renderers/art/ReactARTStack.js +++ b/src/renderers/art/ReactARTStack.js @@ -19,6 +19,7 @@ const Transform = require('art/core/transform'); const Mode = require('art/modes/current'); const React = require('react'); +const ReactDefaultBatchingStrategy = require('ReactDefaultBatchingStrategy'); const ReactDOM = require('react-dom'); const ReactInstanceMap = require('ReactInstanceMap'); const ReactMultiChild = require('ReactMultiChild'); @@ -198,15 +199,23 @@ const Surface = React.createClass({ node.resize(+this.props.width, +this.props.height); } - const transaction = ReactUpdates.ReactReconcileTransaction.getPooled(); - transaction.perform( - this.updateChildren, - this, - this.props.children, - transaction, - ReactInstanceMap.get(this)._context, - ); - ReactUpdates.ReactReconcileTransaction.release(transaction); + const doUpdate = () => { + const transaction = ReactUpdates.ReactReconcileTransaction.getPooled(); + transaction.perform( + this.updateChildren, + this, + this.props.children, + transaction, + ReactInstanceMap.get(this)._context, + ); + ReactUpdates.ReactReconcileTransaction.release(transaction); + }; + + if (ReactDefaultBatchingStrategy.isBatchingUpdates) { + doUpdate(); + } else { + ReactUpdates.batchedUpdates(doUpdate); + } if (node.render) { node.render(); diff --git a/src/renderers/native/NativeMethodsMixin.js b/src/renderers/native/NativeMethodsMixin.js index e02e6d6a9d..f1dec131c5 100644 --- a/src/renderers/native/NativeMethodsMixin.js +++ b/src/renderers/native/NativeMethodsMixin.js @@ -23,7 +23,7 @@ var ReactNative; // TODO: figure this out when we work on flat bundles in RN. // This might not be needed after all. -function injectReactNative(RN : $FlowFixMe) { +function injectReactNative(RN: $FlowFixMe) { ReactNative = RN; } @@ -42,7 +42,6 @@ import type { ReactNativeBaseComponentViewConfig, } from 'ReactNativeViewConfigRegistry'; - /** * `NativeMethodsMixin` provides methods to access the underlying native * component directly. This can be useful in cases when you want to focus diff --git a/src/renderers/native/ReactNative.js b/src/renderers/native/ReactNative.js index b7de25ae8b..8a37938bd9 100644 --- a/src/renderers/native/ReactNative.js +++ b/src/renderers/native/ReactNative.js @@ -17,7 +17,7 @@ var ReactNative = ReactNativeFeatureFlags.useFiber ? require('ReactNativeFiber') : require('ReactNativeStack'); - NativeMethodsMixin.__injectReactNative(ReactNative); +NativeMethodsMixin.__injectReactNative(ReactNative); ReactNative.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = { createReactNativeComponentClass: require('createReactNativeComponentClass'),