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
/**