From cd5f3c88dcab185fbd14bacade425621825b5b47 Mon Sep 17 00:00:00 2001 From: cfngc4594 Date: Sun, 23 Mar 2025 21:03:53 +0800 Subject: [PATCH] refactor(problem-editor): optimize event handlers with useCallback --- src/components/problem-editor.tsx | 41 ++++++++++++++++++------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/src/components/problem-editor.tsx b/src/components/problem-editor.tsx index 55ba9d7..d46be86 100644 --- a/src/components/problem-editor.tsx +++ b/src/components/problem-editor.tsx @@ -61,7 +61,7 @@ export function CodeEditor() { try { const monacoLanguageClient = await connectToLanguageServer( currentEditorLanguageConfig, - currentLanguageServerConfig, + currentLanguageServerConfig ); monacoLanguageClientRef.current = monacoLanguageClient; setMonacoLanguageClient(monacoLanguageClient); @@ -92,33 +92,40 @@ export function CodeEditor() { }; }, [setMonacoLanguageClient]); + const handleEditorWillMount = useCallback((monaco: Monaco) => { + shikiToMonaco(highlighter, monaco); + }, []); + + const handleOnMount = useCallback( + async (editor: editor.IStandaloneCodeEditor) => { + setEditor(editor); + await connectLSP(); + }, + [setEditor, connectLSP] + ); + + const handleEditorChange = useCallback( + (value: string | undefined) => { + if (value !== undefined) { + changeValue(value); + } + }, + [changeValue] + ); + if (!hydrated) { return ; } - const handleBeforeMount = (monaco: Monaco) => { - shikiToMonaco(highlighter, monaco); - }; - - const handleOnMount = async (editor: editor.IStandaloneCodeEditor) => { - setEditor(editor); - await connectLSP(); - }; - - const handleOnChange = (value: string | undefined) => { - if (value === undefined) return; - changeValue(value); - }; - return ( } className="h-full w-full py-2"