diff --git a/scripts/fiber/tests-passing.txt b/scripts/fiber/tests-passing.txt
index 36d020d40a..a97036fb33 100644
--- a/scripts/fiber/tests-passing.txt
+++ b/scripts/fiber/tests-passing.txt
@@ -1240,6 +1240,8 @@ src/renderers/dom/shared/__tests__/ReactEventListener-test.js
src/renderers/dom/shared/__tests__/ReactMount-test.js
* throws when given a non-node
+* returns false on non-React containers
+* returns true on React containers
* throws when given a string
* throws when given a factory
* should render different components in same root
diff --git a/src/renderers/dom/fiber/ReactDOMFiber.js b/src/renderers/dom/fiber/ReactDOMFiber.js
index f58466bab4..f142d0554f 100644
--- a/src/renderers/dom/fiber/ReactDOMFiber.js
+++ b/src/renderers/dom/fiber/ReactDOMFiber.js
@@ -518,11 +518,16 @@ var ReactDOM = {
}
// Unmount should not be batched.
- return DOMRenderer.unbatchedUpdates(() => {
- return renderSubtreeIntoContainer(null, null, container, () => {
+ DOMRenderer.unbatchedUpdates(() => {
+ renderSubtreeIntoContainer(null, null, container, () => {
container._reactRootContainer = null;
});
});
+ // If you call unmountComponentAtNode twice in quick succession, you'll
+ // get `true` twice. That's probably fine?
+ return true;
+ } else {
+ return false;
}
},
diff --git a/src/renderers/dom/shared/__tests__/ReactMount-test.js b/src/renderers/dom/shared/__tests__/ReactMount-test.js
index fb942d15b8..2bfc9ac26e 100644
--- a/src/renderers/dom/shared/__tests__/ReactMount-test.js
+++ b/src/renderers/dom/shared/__tests__/ReactMount-test.js
@@ -46,6 +46,21 @@ describe('ReactMount', () => {
'unmountComponentAtNode(...): Target container is not a DOM element.',
);
});
+
+ it('returns false on non-React containers', () => {
+ var d = document.createElement('div');
+ d.innerHTML = 'hellooo';
+ expect(ReactDOM.unmountComponentAtNode(d)).toBe(false);
+ expect(d.textContent).toBe('hellooo');
+ });
+
+ it('returns true on React containers', () => {
+ var d = document.createElement('div');
+ ReactDOM.render(hellooo, d);
+ expect(d.textContent).toBe('hellooo');
+ expect(ReactDOM.unmountComponentAtNode(d)).toBe(true);
+ expect(d.textContent).toBe('');
+ });
});
it('throws when given a string', () => {