From 9c8ddb33169d47374df45f6672acf6ef154da968 Mon Sep 17 00:00:00 2001 From: Justin Woo Date: Sun, 24 Aug 2014 10:53:15 -0400 Subject: [PATCH] Error when unmountComponentAtNode receives non-node --- src/browser/ui/ReactMount.js | 8 ++++++++ src/browser/ui/__tests__/ReactMount-test.js | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/browser/ui/ReactMount.js b/src/browser/ui/ReactMount.js index a0dc478d12..596f7bb57a 100644 --- a/src/browser/ui/ReactMount.js +++ b/src/browser/ui/ReactMount.js @@ -465,6 +465,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 473c87672c..95e94e4ee3 100644 --- a/src/browser/ui/__tests__/ReactMount-test.js +++ b/src/browser/ui/__tests__/ReactMount-test.js @@ -38,6 +38,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');