@samitouri / QOS-React / commits / 9f11f8c263

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.

Ben Alpert committed Apr 21, 2016 at 15:06 UTC 9f11f8c2634921e657df2691e6bfda18fead5bcc
1 file changed +9 -6
src/renderers/native/ReactNative/ReactNativeEventEmitter.js
+9 -6
@@ -16,6 +16,7 @@ var EventPluginRegistry = require('EventPluginRegistry');
16 var ReactEventEmitterMixin = require('ReactEventEmitterMixin');
17 var ReactNativeComponentTree = require('ReactNativeComponentTree');
18 var ReactNativeTagHandles = require('ReactNativeTagHandles');
19 +var ReactUpdates = require('ReactUpdates');
20 var EventConstants = require('EventConstants');
21
22 var merge = require('merge');
@@ -119,12 +120,14 @@ var ReactNativeEventEmitter = merge(ReactEventEmitterMixin, {
120 ) {
121 var nativeEvent = nativeEventParam || EMPTY_NATIVE_EVENT;
122 var inst = ReactNativeComponentTree.getInstanceFromNode(rootNodeID);
122 - ReactNativeEventEmitter.handleTopLevel(
123 - topLevelType,
124 - inst,
125 - nativeEvent,
126 - nativeEvent.target
127 - );
123 + ReactUpdates.batchedUpdates(function() {
124 + ReactNativeEventEmitter.handleTopLevel(
125 + topLevelType,
126 + inst,
127 + nativeEvent,
128 + nativeEvent.target
129 + );
130 + });
131 },
132
133 /**