From 498badc0bc5ec7d931411c412c04e516667de35c Mon Sep 17 00:00:00 2001 From: Dane Everitt Date: Tue, 17 Sep 2019 22:54:16 -0700 Subject: [PATCH] Actually fix the console memory leaking... --- resources/scripts/components/server/Console.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/resources/scripts/components/server/Console.tsx b/resources/scripts/components/server/Console.tsx index ddbf73fe..2ea31e90 100644 --- a/resources/scripts/components/server/Console.tsx +++ b/resources/scripts/components/server/Console.tsx @@ -1,5 +1,5 @@ -import React, { createRef, useEffect } from 'react'; -import { Terminal } from 'xterm'; +import React, { createRef, useEffect, useMemo } from 'react'; +import { ITerminalOptions, Terminal } from 'xterm'; import * as TerminalFit from 'xterm/lib/addons/fit/fit'; import SpinnerOverlay from '@/components/elements/SpinnerOverlay'; import { ServerContext } from '@/state/server'; @@ -25,7 +25,7 @@ const theme = { brightWhite: '#ffffff', }; -const terminal = new Terminal({ +const terminalProps: ITerminalOptions = { disableStdin: true, cursorStyle: 'underline', allowTransparency: true, @@ -33,10 +33,11 @@ const terminal = new Terminal({ fontFamily: 'Menlo, Monaco, Consolas, monospace', rows: 30, theme: theme, -}); +}; export default () => { const ref = createRef(); + const terminal = useMemo(() => new Terminal({ ...terminalProps }), []); const connected = ServerContext.useStoreState(state => state.socket.connected); const instance = ServerContext.useStoreState(state => state.socket.instance);