**Do you want to request a *feature* or report a *bug*?**
Bug

**What is the current behavior?**
When using `dangerouslySetInnerHtml` of svg elements, the DOM nodes from the previous render aren't being removed.

**If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://jsfiddle.net or similar (template: https://jsfiddle.net/84v837e9/).**

See this [fiddle](https://jsfiddle.net/csmrvzsb/1/)

**What is the expected behavior?**
The DOM should only contain the last rendered value for `dangerouslySetInnerHTML`.

**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**
React - 15.5.4+
Browser - IE11
Did this work in previous versions of React? Not sure


After digging around I found #6982 . Which made me think this is happening because of [this line](https://github.com/facebook/react/blob/master/src/renderers/dom/shared/setInnerHTML.js#L37) in `setInnerHTML.js` where it looks like this
```js
  // IE does not have innerHTML for SVG nodes, so instead we inject the
  // new markup in a temp node and then move the child nodes across into
  // the target node
  if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {
    reusableSVGContainer =
      reusableSVGContainer || document.createElement('div');
    reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';
    var svgNode = reusableSVGContainer.firstChild;
    while (svgNode.firstChild) {
      node.appendChild(svgNode.firstChild);
    }
  }
```

Because there's a call to `node.appendChild(svgNode.firstChild);` it will never remove all of the previous nodes but only add the new ones.
But that's just a guess...
/**
 * Copyright (c) 2016-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @emails react-core
 */
'use strict';
var setInnerHTML = require('setInnerHTML');
var Namespaces = require('DOMNamespaces').Namespaces;