From 5fa7c9c18dcc8f67514ecf1566fa567a6a7bbb51 Mon Sep 17 00:00:00 2001 From: "Au Chen Xi, Gabriel" Date: Mon, 13 Nov 2023 19:12:06 +0800 Subject: [PATCH] Fix useEffect loop --- src/pages/maintainer/environments.tsx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/pages/maintainer/environments.tsx b/src/pages/maintainer/environments.tsx index 829df37..51daef8 100644 --- a/src/pages/maintainer/environments.tsx +++ b/src/pages/maintainer/environments.tsx @@ -102,9 +102,14 @@ const CreateEnvironment = () => { } }, [router]); const [formData, setFormData] = useState(emptyFormState); - const languages = api.judge.getLanguages.useQuery(); + const [tempLangID, setTempLangID] = useState(0); + const languages = api.judge.getLanguages.useQuery(); + const setFormDataWrapper = (item: Partial) => { + if (item.languageId) { + setTempLangID(item.languageId); + } setFormData((prev) => ({ ...prev, ...item, @@ -171,17 +176,17 @@ const CreateEnvironment = () => { ...useQuestionObject.environment, }); } - }, [useQuestionObject.environmentId, useQuestionObject.environment, formData.languageId]); + }, [useQuestionObject.environmentId, tempLangID]); useEffect(() => { - if (!inEnvironments(formData.languageId)) { + if (!inEnvironments(tempLangID)) { const { languageId, ...empty } = emptyFormState; setFormDataWrapper(empty); return; } - useQuestionObject.setCurrentLanguage(useQuestionObject.languages.find((val) => val.id === formData.languageId)!); + useQuestionObject.setCurrentLanguage(useQuestionObject.languages.find((val) => val.id === tempLangID)!); - }, [formData.languageId]) + }, [tempLangID]) return (