Rely on lazy listeners
Sebastian Markbage committed
Nov 15, 2016 at 17:50 UTC
151094ce03bddeb69963257582e57c6616187be5
1 file changed
+2
-45
src/renderers/dom/fiber/ReactDOMFiberComponent.js
+2
-45
@@ -20,7 +20,6 @@ var DOMLazyTree = require('DOMLazyTree');
20
var DOMNamespaces = require('DOMNamespaces');
21
var DOMProperty = require('DOMProperty');
22
var DOMPropertyOperations = require('DOMPropertyOperations');
23
-var EventPluginHub = require('EventPluginHub');
23
var EventPluginRegistry = require('EventPluginRegistry');
24
var ReactBrowserEventEmitter = require('ReactBrowserEventEmitter');
25
var ReactDOMComponentTree = require('ReactDOMComponentTree');
@@ -42,7 +41,6 @@ var validateDOMNesting = require('validateDOMNesting');
41
var warning = require('warning');
42
var didWarnShadyDOM = false;
43
45
-var deleteListener = EventPluginHub.deleteListener;
44
var getNode = ReactDOMComponentTree.getNodeFromInstance;
45
var listenTo = ReactBrowserEventEmitter.listenTo;
46
var registrationNameModules = EventPluginRegistry.registrationNameModules;
@@ -204,30 +202,6 @@ function assertValidProps(component, props) {
202
);
203
}
204
207
-function enqueuePutListener(inst, registrationName, listener, transaction) {
208
- if (transaction instanceof ReactServerRenderingTransaction) {
209
- return;
210
- }
211
- if (__DEV__) {
212
- // IE8 has no API for event capturing and the `onScroll` event doesn't
213
- // bubble.
214
- warning(
215
- registrationName !== 'onScroll' || isEventSupported('scroll', true),
216
- 'This browser doesn\'t support the `onScroll` event'
217
- );
218
- }
219
- var containerInfo = inst._hostContainerInfo;
220
- var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;
221
- var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;
222
- listenTo(registrationName, doc);
223
- transaction.getReactMountReady().enqueue(putListener, {
224
- inst: inst,
225
- registrationName: registrationName,
226
- listener: listener,
227
- });
228
-}
229
-
230
-// TODO: This is coming from future #8192. Dedupe this and enqueuePutListener.
205
function ensureListeningTo(inst, registrationName, transaction) {
206
if (transaction instanceof ReactServerRenderingTransaction) {
207
return;
@@ -246,15 +220,6 @@ function ensureListeningTo(inst, registrationName, transaction) {
220
listenTo(registrationName, doc);
221
}
222
249
-function putListener() {
250
- var listenerToPut = this;
251
- EventPluginHub.putListener(
252
- listenerToPut.inst,
253
- listenerToPut.registrationName,
254
- listenerToPut.listener
255
- );
256
-}
257
-
223
function inputPostMount() {
224
var inst = this;
225
ReactDOMFiberInput.postMountWrapper(inst);
@@ -570,12 +535,7 @@ function updateDOMProperties(
535
}
536
workInProgress._previousStyleCopy = null;
537
} else if (registrationNameModules.hasOwnProperty(propKey)) {
573
- if (lastProps[propKey]) {
574
- // Only call deleteListener if there was a listener previously or
575
- // else willDeleteListener gets called when there wasn't actually a
576
- // listener (e.g., onClick={null})
577
- deleteListener(workInProgress, propKey);
578
- }
538
+ // Do nothing for deleted listeners.
539
} else if (isCustomComponent(workInProgress._tag, lastProps)) {
540
if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
541
DOMPropertyOperations.deleteValueForAttribute(
@@ -636,9 +596,7 @@ function updateDOMProperties(
596
}
597
} else if (registrationNameModules.hasOwnProperty(propKey)) {
598
if (nextProp) {
639
- enqueuePutListener(workInProgress, propKey, nextProp, transaction);
640
- } else if (lastProp) {
641
- deleteListener(workInProgress, propKey);
599
+ ensureListeningTo(workInProgress, propKey, transaction);
600
}
601
} else if (isCustomComponentTag) {
602
if (!RESERVED_PROPS.hasOwnProperty(propKey)) {
@@ -1081,7 +1039,6 @@ var ReactDOMFiberComponent = {
1039
1040
workInProgress.unmountChildren(safely, skipLifecycle);
1041
ReactDOMComponentTree.uncacheNode(workInProgress);
1084
- EventPluginHub.deleteAllListeners(workInProgress);
1042
workInProgress._domID = 0;
1043
workInProgress._wrapperState = null;
1044