diff --git a/src/frontend/src/components/dictComponent/index.tsx b/src/frontend/src/components/dictComponent/index.tsx index 2d9a84237..057ba599d 100644 --- a/src/frontend/src/components/dictComponent/index.tsx +++ b/src/frontend/src/components/dictComponent/index.tsx @@ -1,4 +1,4 @@ -import { useEffect, useRef } from "react"; +import { useEffect } from "react"; import { DictComponentType } from "../../types/components"; import DictAreaModal from "../../modals/dictAreaModal"; @@ -13,7 +13,6 @@ export default function DictComponent({ id = "", }: DictComponentType): JSX.Element { // Create a reference to the value - const ref = useRef(value); useEffect(() => { if (disabled) { @@ -21,10 +20,6 @@ export default function DictComponent({ } }, [disabled]); - useEffect(() => { - // Update the reference value - ref.current = value; - }, [value]); return (
{ onChange(obj); }} diff --git a/src/frontend/src/modals/dictAreaModal/index.tsx b/src/frontend/src/modals/dictAreaModal/index.tsx index 7aee82d14..afcab7857 100644 --- a/src/frontend/src/modals/dictAreaModal/index.tsx +++ b/src/frontend/src/modals/dictAreaModal/index.tsx @@ -4,15 +4,15 @@ import "ace-builds/src-noconflict/mode-python"; import "ace-builds/src-noconflict/theme-github"; import "ace-builds/src-noconflict/theme-twilight"; // import "ace-builds/webpack-resolver"; -import { useEffect, useRef, useState } from "react"; +import { useEffect, useState } from "react"; import JsonView from "react18-json-view"; import "react18-json-view/src/dark.css"; import "react18-json-view/src/style.css"; import IconComponent from "../../components/genericIconComponent"; -import { Button } from "../../components/ui/button"; import { CODE_DICT_DIALOG_SUBTITLE } from "../../constants/constants"; import { useDarkStore } from "../../stores/darkStore"; import BaseModal from "../baseModal"; +import { cloneDeep } from "lodash"; export default function DictAreaModal({ children, @@ -25,14 +25,26 @@ export default function DictAreaModal({ }): JSX.Element { const [open, setOpen] = useState(false); const isDark = useDarkStore((state) => state.dark); - const ref = useRef(value); + const [myValue, setMyValue] = useState(value); useEffect(() => { - if (value) ref.current = value; - }, [value]); + setMyValue(value); + }, [value, open]); return ( - + { + onChange(myValue); + setOpen(false); + } + : undefined + } + > {children} { - ref.current = edit["src"]; - }} onChange={(edit) => { - ref.current = edit["src"]; + setMyValue(edit.src); }} - src={ref.current} + src={cloneDeep(myValue)} /> - {onChange && ( -
- -
- )}
+ ); }