diff --git a/src/meta_tags.js b/src/meta_tags.js index c3c4af2c2d41456cc92f28580acf1c4ee2e0b815..240cd9544edcb16df2bcfb313b441035764c0450 100644 --- a/src/meta_tags.js +++ b/src/meta_tags.js @@ -17,6 +17,11 @@ class MetaTags extends Component { return; } } + componentWillUnmount() { + if (this.temporaryElement) { + ReactDOM.unmountComponentAtNode(this.temporaryElement); + } + } handleChildrens() { const {children} = this.props; @@ -26,9 +31,8 @@ class MetaTags extends Component { const headComponent = <div className="react-head-temp">{children}</div>; - const temp = document.createElement("div"); - ReactDOM.render(headComponent, temp, () => { - const childStr = temp.innerHTML; + ReactDOM.render(headComponent, this.temporaryElement, () => { + const childStr = this.temporaryElement.innerHTML; //if html is not changed return if(this.lastChildStr === childStr){ @@ -37,7 +41,7 @@ class MetaTags extends Component { this.lastChildStr = childStr; - let childNodes = Array.prototype.slice.call(temp.querySelector('.react-head-temp').children); + let childNodes = Array.prototype.slice.call(this.temporaryElement.querySelector('.react-head-temp').children); const head = document.head; const headHtml = head.innerHTML; @@ -67,6 +71,7 @@ class MetaTags extends Component { } componentDidMount() { + this.temporaryElement = document.createElement('div'); this.handleChildrens(); } componentDidUpdate(oldProps) {