diff --git a/packages/ui-default/components/autocomplete/components/AutoComplete.tsx b/packages/ui-default/components/autocomplete/components/AutoComplete.tsx index d1696ccd4..f67a4f872 100644 --- a/packages/ui-default/components/autocomplete/components/AutoComplete.tsx +++ b/packages/ui-default/components/autocomplete/components/AutoComplete.tsx @@ -128,9 +128,12 @@ const AutoComplete = forwardRef(function Impl(props: AutoCompleteProps, re setCurrentItem((!freeSolo && queryCache[query].length > 0) ? 0 : null); }; + useEffect(() => { + setSelectedKeys(props.selectedKeys || []); + }, [JSON.stringify(props.selectedKeys)]); const dispatchChange = () => { if (!multi) onChange(inputRef.current?.value); - else onChange([...selectedKeys, inputRef.current?.value].filter((v) => v?.trim().length > 0).join(',')); + else onChange(selectedKeys.filter((v) => v?.trim().length > 0).join(',')); }; let first = !multi; diff --git a/packages/ui-default/components/problemconfig/ProblemConfigForm.tsx b/packages/ui-default/components/problemconfig/ProblemConfigForm.tsx index d2d584ef9..e606ceed5 100644 --- a/packages/ui-default/components/problemconfig/ProblemConfigForm.tsx +++ b/packages/ui-default/components/problemconfig/ProblemConfigForm.tsx @@ -1,6 +1,7 @@ import { Card, InputGroup, Tag, } from '@blueprintjs/core'; +import { isEqual } from 'lodash'; import React from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { i18n } from 'vj/utils'; @@ -35,8 +36,8 @@ function FileIOConfig() { function ExtraFilesConfig() { const Files = useSelector((state: RootState) => state.testdata); - const userExtraFiles = useSelector((state: RootState) => state.config.user_extra_files) || []; - const judgeExtraFiles = useSelector((state: RootState) => state.config.judge_extra_files) || []; + const userExtraFiles = useSelector((state: RootState) => state.config.user_extra_files || [], isEqual); + const judgeExtraFiles = useSelector((state: RootState) => state.config.judge_extra_files || [], isEqual); const dispatch = useDispatch(); const userRef = React.useRef(); const judgeRef = React.useRef();