diff --git a/packages/react-dom/src/__tests__/ReactRenderDocument-test.js b/packages/react-dom/src/__tests__/ReactRenderDocument-test.js index c9b8cb89f3c..3dda50d3774 100644 --- a/packages/react-dom/src/__tests__/ReactRenderDocument-test.js +++ b/packages/react-dom/src/__tests__/ReactRenderDocument-test.js @@ -417,7 +417,9 @@ describe('rendering React components at document', () => { // getTestDocument() has an extra that we didn't render. expect(() => ReactDOM.hydrate(, testDocument), - ).toWarnDev('Did not expect server HTML to contain a in .'); + ).toWarnDev( + 'Did not expect server HTML to contain in .', + ); expect(testDocument.body.innerHTML).toBe('Hello world'); }); diff --git a/packages/react-dom/src/client/ReactDOMFiberComponent.js b/packages/react-dom/src/client/ReactDOMFiberComponent.js index 4975e55f673..e65e410860b 100644 --- a/packages/react-dom/src/client/ReactDOMFiberComponent.js +++ b/packages/react-dom/src/client/ReactDOMFiberComponent.js @@ -62,6 +62,8 @@ const HTML = '__html'; const {html: HTML_NAMESPACE} = Namespaces; +let getNodeSignature; + let getStack = () => ''; let warnedUnknownTags; @@ -79,6 +81,17 @@ let normalizeHTML; if (__DEV__) { getStack = getCurrentFiberStackAddendum; + getNodeSignature = function(node: Element | Document) { + const attrs = + node instanceof Element + ? [].slice + .call(node.attributes) + .map(item => item.name + '="' + item.value + '"') + : []; + attrs.unshift(node.nodeName.toLowerCase()); + return attrs.join(' '); + }; + warnedUnknownTags = { // Chrome is the only major browser not shipping