diff --git a/src/browser/ui/ReactMount.js b/src/browser/ui/ReactMount.js index ff0d3e2b40..57a20710ff 100644 --- a/src/browser/ui/ReactMount.js +++ b/src/browser/ui/ReactMount.js @@ -459,6 +459,14 @@ var ReactMount = { 'componentDidUpdate.' ); + invariant( + container && ( + container.nodeType === ELEMENT_NODE_TYPE || + container.nodeType === DOC_NODE_TYPE + ), + 'unmountComponentAtNode(...): Target container is not a DOM element.' + ); + var reactRootID = getReactRootID(container); var component = instancesByReactRootID[reactRootID]; if (!component) { diff --git a/src/browser/ui/__tests__/ReactMount-test.js b/src/browser/ui/__tests__/ReactMount-test.js index 79701ec666..b82daaa3a6 100644 --- a/src/browser/ui/__tests__/ReactMount-test.js +++ b/src/browser/ui/__tests__/ReactMount-test.js @@ -30,6 +30,18 @@ describe('ReactMount', function() { }); }); + describe('unmountComponentAtNode', function() { + it('throws when given a non-node', function() { + var nodeArray = document.getElementsByTagName('div'); + expect(function() { + React.unmountComponentAtNode(nodeArray); + }).toThrow( + 'Invariant Violation: unmountComponentAtNode(...): Target container ' + + 'is not a DOM element.' + ); + }); + }); + it('throws when given a string', function() { expect(function() { ReactTestUtils.renderIntoDocument('div');