From ef4a4c861137de73ddd1bd25d9e0cd1cc39bda20 Mon Sep 17 00:00:00 2001 From: "kasia.oczkowska" Date: Fri, 4 Oct 2024 10:30:50 +0100 Subject: [PATCH] fix: limit resetting form on defaultValues change --- packages/web/src/components/Form/index.jsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/web/src/components/Form/index.jsx b/packages/web/src/components/Form/index.jsx index 68a1b1db..574674d4 100644 --- a/packages/web/src/components/Form/index.jsx +++ b/packages/web/src/components/Form/index.jsx @@ -1,6 +1,7 @@ import * as React from 'react'; import { FormProvider, useForm, useWatch } from 'react-hook-form'; import PropTypes from 'prop-types'; +import isEqual from 'lodash/isEqual'; const noop = () => null; @@ -23,6 +24,7 @@ function Form(props) { }); const form = useWatch({ control: methods.control }); + const prevDefaultValues = React.useRef(defaultValues); /** * For fields having `dependsOn` fields, we need to re-validate the form. @@ -32,7 +34,10 @@ function Form(props) { }, [methods.trigger, form]); React.useEffect(() => { - methods.reset(defaultValues); + if (!isEqual(defaultValues, prevDefaultValues.current)) { + prevDefaultValues.current = defaultValues; + methods.reset(defaultValues); + } }, [defaultValues]); return (