Ignore event listeners on unmounted components

Summary:
When a touch responder gets unmounted, it can still get events dispatched to it.

We used to ignore those errors but in the new model we read the props instead of the event listener bank. The props still exist after unmount.

Instead, I check that the rootNodeID is still set since this gets reset during unmount.

Reviewed By: spicyj, bvaughn

Differential Revision: D4597127

fbshipit-source-id: b405e4ef1bcb14970be76d9ab7203cebf1f4d6c9
This commit is contained in:
Sebastian Markbage
2017-02-22 12:25:43 -08:00
committed by Facebook Github Bot
parent ca2741609a
commit fd4ad6ca82

View File

@@ -142,6 +142,10 @@ var EventPluginHub = {
// Text node, let it bubble through.
return null;
}
if (!inst._rootNodeID) {
// If the instance is already unmounted, we have no listeners.
return null;
}
const props = inst._currentElement.props;
listener = props[registrationName];
if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, props)) {