diff --git a/packages/components/form/FormItem.tsx b/packages/components/form/FormItem.tsx index c6485514e1..49ce1f54d5 100644 --- a/packages/components/form/FormItem.tsx +++ b/packages/components/form/FormItem.tsx @@ -1,10 +1,10 @@ +import { get, isEqual, isFunction, isObject, isString, set } from 'lodash-es'; import React, { forwardRef, ReactNode, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react'; import { CheckCircleFilledIcon as TdCheckCircleFilledIcon, CloseCircleFilledIcon as TdCloseCircleFilledIcon, ErrorCircleFilledIcon as TdErrorCircleFilledIcon, } from 'tdesign-icons-react'; -import { get, isEqual, isFunction, isObject, isString, set } from 'lodash-es'; import useConfig from '../hooks/useConfig'; import useDefaultProps from '../hooks/useDefaultProps'; @@ -351,9 +351,9 @@ const FormItem = forwardRef((originalProps, ref const resetType = type || resetTypeFromContext; const resetValue = getResetValue(resetType); - // reset 不校验 - updateFormValue(resetValue, false); - + valueRef.current = resetValue; + set(form?.store, fullPath, resetValue); + setFormValue(resetValue); if (resetValidating) { setNeedResetField(true); } else { diff --git a/packages/components/form/hooks/useInstance.tsx b/packages/components/form/hooks/useInstance.tsx index ccde749a71..9f84707bec 100644 --- a/packages/components/form/hooks/useInstance.tsx +++ b/packages/components/form/hooks/useInstance.tsx @@ -1,4 +1,4 @@ -import { cloneDeep, isArray, isEmpty, isFunction, isObject, merge, set, get } from 'lodash-es'; +import { cloneDeep, get, isArray, isEmpty, isFunction, isObject, merge, set } from 'lodash-es'; import log from '@tdesign/common-js/log/index'; import useConfig from '../../hooks/useConfig'; import { calcFieldValue, findFormItem, travelMapFromObject } from '../utils'; @@ -208,6 +208,11 @@ export default function useInstance( [...formMapRef.current.values()].forEach((formItemRef) => { formItemRef?.current?.resetField(); }); + + // eslint-disable-next-line no-param-reassign + floatingFormDataRef.current = {}; + // eslint-disable-next-line no-param-reassign + form.store = {}; } else { const { type = 'initial', fields = [] } = params; fields.forEach((name) => {