From 9f11f8c2634921e657df2691e6bfda18fead5bcc Mon Sep 17 00:00:00 2001 From: Ben Alpert Date: Thu, 21 Apr 2016 15:06:48 -0700 Subject: [PATCH] Batch event handling in React Native This fixes an issue where handling events on a node that was just removed threw a "All native instances should have a tag." error and matches what we do in the DOM renderer in ReactEventListener. --- .../native/ReactNative/ReactNativeEventEmitter.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/renderers/native/ReactNative/ReactNativeEventEmitter.js b/src/renderers/native/ReactNative/ReactNativeEventEmitter.js index 1b252c6995..add29ce39d 100644 --- a/src/renderers/native/ReactNative/ReactNativeEventEmitter.js +++ b/src/renderers/native/ReactNative/ReactNativeEventEmitter.js @@ -16,6 +16,7 @@ var EventPluginRegistry = require('EventPluginRegistry'); var ReactEventEmitterMixin = require('ReactEventEmitterMixin'); var ReactNativeComponentTree = require('ReactNativeComponentTree'); var ReactNativeTagHandles = require('ReactNativeTagHandles'); +var ReactUpdates = require('ReactUpdates'); var EventConstants = require('EventConstants'); var merge = require('merge'); @@ -119,12 +120,14 @@ var ReactNativeEventEmitter = merge(ReactEventEmitterMixin, { ) { var nativeEvent = nativeEventParam || EMPTY_NATIVE_EVENT; var inst = ReactNativeComponentTree.getInstanceFromNode(rootNodeID); - ReactNativeEventEmitter.handleTopLevel( - topLevelType, - inst, - nativeEvent, - nativeEvent.target - ); + ReactUpdates.batchedUpdates(function() { + ReactNativeEventEmitter.handleTopLevel( + topLevelType, + inst, + nativeEvent, + nativeEvent.target + ); + }); }, /**