unmountComponent: function(safely) { switch (this._tag) { case 'iframe': case 'object': case 'img': case 'form': case 'video': case 'audio': var listeners = this._wrapperState.listeners; if (listeners) { for (var i = 0; i < listeners.length; i++) { listeners[i].remove(); } } break; case 'input': case 'textarea': inputValueTracking.stopTracking(this); break; case 'html': case 'head': case 'body': /** * Components like <html> <head> and <body> can't be removed or added * easily in a cross-browser way, however it's valuable to be able to * take advantage of React's reconciliation for styling and <title> * management. So we just document it and throw in dangerous cases. */ invariant( false, '<%s> tried to unmount. Because of cross-browser quirks it is ' + 'impossible to unmount some top-level components (eg <html>, ' + '<head>, and <body>) reliably and efficiently. To fix this, have a ' + 'single top-level component that never unmounts render these ' + 'elements.', this._tag ); break; } this.unmountChildren(safely); ReactDOMComponentTree.uncacheNode(this); EventPluginHub.deleteAllListeners(this); ReactComponentBrowserEnvironment.unmountIDFromEnvironment(this._rootNodeID); this._rootNodeID = null; this._domID = null; this._wrapperState = null; if (__DEV__) { if (this._contentDebugID) { ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID); this._contentDebugID = null; } } },
unmountComponent: function(safely, skipLifecycle) { switch (this._tag) { case 'audio': case 'form': case 'iframe': case 'img': case 'image': case 'link': case 'object': case 'source': case 'video': var listeners = this._wrapperState.listeners; if (listeners) { for (var i = 0; i < listeners.length; i++) { listeners[i].remove(); } } break; case 'input': case 'textarea': inputValueTracking.stopTracking(getNode(this)); break; case 'html': case 'head': case 'body': /** * Components like <html> <head> and <body> can't be removed or added * easily in a cross-browser way, however it's valuable to be able to * take advantage of React's reconciliation for styling and <title> * management. So we just document it and throw in dangerous cases. */ invariant( false, '<%s> tried to unmount. Because of cross-browser quirks it is ' + 'impossible to unmount some top-level components (eg <html>, ' + '<head>, and <body>) reliably and efficiently. To fix this, have a ' + 'single top-level component that never unmounts render these ' + 'elements.', this._tag, ); break; } this.unmountChildren(safely, skipLifecycle); ReactDOMComponentTree.uncacheNode(this); this._rootNodeID = 0; this._domID = 0; this._wrapperState = null; if (__DEV__) { setAndValidateContentChildDev.call(this, null); } },
unmountComponent: function() { ReactDOMComponentTree.uncacheNode(this); },
unmountComponent: function() { this._closingComment = null; this._commentNodes = null; ReactDOMComponentTree.uncacheNode(this); },