diff --git a/extensions/ql-vscode/src/view/compare/Compare.tsx b/extensions/ql-vscode/src/view/compare/Compare.tsx index 0b4812246..48c077c7b 100644 --- a/extensions/ql-vscode/src/view/compare/Compare.tsx +++ b/extensions/ql-vscode/src/view/compare/Compare.tsx @@ -31,7 +31,7 @@ export function Compare(_: Record): JSX.Element { const hasRows = comparison.rows && (comparison.rows.to.length || comparison.rows.from.length); useEffect(() => { - window.addEventListener('message', (evt: MessageEvent) => { + const listener = (evt: MessageEvent) => { if (evt.origin === window.origin) { const msg: ToCompareViewMessage = evt.data; switch (msg.t) { @@ -43,8 +43,13 @@ export function Compare(_: Record): JSX.Element { const origin = evt.origin.replace(/\n|\r/g, ''); console.error(`Invalid event origin ${origin}`); } - }); - }); + }; + window.addEventListener('message', listener); + + return () => { + window.removeEventListener('message', listener); + }; + }, []); if (!comparison) { return
Waiting for results to load.
; } diff --git a/extensions/ql-vscode/src/view/remote-queries/RemoteQueries.tsx b/extensions/ql-vscode/src/view/remote-queries/RemoteQueries.tsx index b05d7f4a3..085830711 100644 --- a/extensions/ql-vscode/src/view/remote-queries/RemoteQueries.tsx +++ b/extensions/ql-vscode/src/view/remote-queries/RemoteQueries.tsx @@ -395,7 +395,7 @@ export function RemoteQueries(): JSX.Element { const [sort, setSort] = useState('name'); useEffect(() => { - window.addEventListener('message', (evt: MessageEvent) => { + const listener = (evt: MessageEvent) => { if (evt.origin === window.origin) { const msg: ToRemoteQueriesMessage = evt.data; if (msg.t === 'setRemoteQueryResult') { @@ -408,8 +408,13 @@ export function RemoteQueries(): JSX.Element { const origin = evt.origin.replace(/\n|\r/g, ''); console.error(`Invalid event origin ${origin}`); } - }); - }); + }; + window.addEventListener('message', listener); + + return () => { + window.removeEventListener('message', listener); + }; + }, []); if (!queryResult) { return
Waiting for results to load.
;