File tree Expand file tree Collapse file tree 2 files changed +26
-5
lines changed
packages/react-devtools-extensions/src Expand file tree Collapse file tree 2 files changed +26
-5
lines changed Original file line number Diff line number Diff line change 66
77'use strict' ;
88
9+ let welcomeHasInitialized = false ;
10+
911function welcome ( event ) {
1012 if (
1113 event . source !== window ||
@@ -14,6 +16,25 @@ function welcome(event) {
1416 return ;
1517 }
1618
19+ // In some circumstances, this method is called more than once for a single welcome message.
20+ // The exact circumstances of this are unclear, though it seems related to 3rd party event batching code.
21+ //
22+ // Regardless, call this method multiple times can cause DevTools to add duplicate elements to the Store
23+ // (and throw an error) or worse yet, choke up entirely and freeze the browser.
24+ //
25+ // The simplest solution is to ignore the duplicate events.
26+ // To be clear, this SHOULD NOT BE NECESSARY, since we remove the event handler below.
27+ //
28+ // See https://github.com/facebook/react/issues/24162
29+ if ( welcomeHasInitialized ) {
30+ console . warn (
31+ 'React DevTools detected duplicate welcome "message" events from the content script.' ,
32+ ) ;
33+ return ;
34+ }
35+
36+ welcomeHasInitialized = true ;
37+
1738 window . removeEventListener ( 'message' , welcome ) ;
1839
1940 setup ( window . __REACT_DEVTOOLS_GLOBAL_HOOK__ ) ;
Original file line number Diff line number Diff line change @@ -25,15 +25,15 @@ function handleMessageFromDevtools(message) {
2525 ) ;
2626}
2727
28- function handleMessageFromPage ( evt ) {
28+ function handleMessageFromPage ( event ) {
2929 if (
30- evt . source === window &&
31- evt . data &&
32- evt . data . source === 'react-devtools-bridge'
30+ event . source === window &&
31+ event . data &&
32+ event . data . source === 'react-devtools-bridge'
3333 ) {
3434 backendInitialized = true ;
3535
36- port . postMessage ( evt . data . payload ) ;
36+ port . postMessage ( event . data . payload ) ;
3737 }
3838}
3939
You can’t perform that action at this time.
0 commit comments