11import { useEffect , useMemo , useState } from 'react' ;
22
33import { ValidateTrigger } from '../../../../shared/index' ;
4- import { useEvent , useIsFirstRender } from '../../../../_internal/index' ;
4+ import { useEvent } from '../../../../_internal/index' ;
55import { useFormProps } from '../Form' ;
66import { FieldTypes } from '../types' ;
77import { delayValidationRule } from '../validation' ;
@@ -47,7 +47,6 @@ export function useField<T extends FieldTypes, Props extends CubeFieldProps<T>>(
4747 props = useFormProps ( props ) ;
4848
4949 let {
50- defaultValue,
5150 id,
5251 idPrefix,
5352 name,
@@ -60,15 +59,9 @@ export function useField<T extends FieldTypes, Props extends CubeFieldProps<T>>(
6059 showValid,
6160 shouldUpdate,
6261 } = props ;
63-
64- if ( rules && rules . length && validationDelay ) {
65- rules . unshift ( delayValidationRule ( validationDelay ) ) ;
66- }
67-
6862 const nonInput = ! name ;
6963 const fieldName : string = name != null ? name : '' ;
7064
71- const isFirstRender = useIsFirstRender ( ) ;
7265 let [ fieldId , setFieldId ] = useState (
7366 id || ( idPrefix ? `${ idPrefix } _${ fieldName } ` : fieldName ) ,
7467 ) ;
@@ -95,41 +88,22 @@ export function useField<T extends FieldTypes, Props extends CubeFieldProps<T>>(
9588
9689 let field = form ?. getFieldInstance ( fieldName ) ;
9790
98- if ( field ) {
99- field . rules = rules ;
100- }
101-
102- let isRequired = rules && ! ! rules . find ( ( rule ) => rule . required ) ;
103-
104- useEffect ( ( ) => {
105- if ( ! form ) return ;
106-
107- if ( field ) {
108- form . forceReRender ( ) ;
109- } else {
110- form . createField ( fieldName ) ;
111- }
112- } , [ field ] ) ;
113-
11491 if ( form ) {
115- if ( isFirstRender ) {
116- if ( ! field ) {
117- field = form . createField ( fieldName , true ) ;
118- }
119-
120- if ( field ?. value == null && defaultValue != null ) {
121- form . setFieldValue ( fieldName , defaultValue , false , true ) ;
122- form . updateInitialFieldsValue ( { [ fieldName ] : defaultValue } ) ;
123-
124- field = form ?. getFieldInstance ( fieldName ) ;
125- }
92+ if ( ! field ) {
93+ field = form . createField ( fieldName , true ) ;
12694 }
95+ }
96+
97+ if ( field && field . rules !== rules ) {
98+ field . rules = rules ;
12799
128- if ( ! field ?. touched && defaultValue != null ) {
129- form . setFieldValue ( fieldName , defaultValue , false , true ) ;
100+ if ( field . rules && field . rules . length && validationDelay ) {
101+ field . rules . unshift ( delayValidationRule ( validationDelay ) ) ;
130102 }
131103 }
132104
105+ let isRequired = rules && ! ! rules . find ( ( rule ) => rule . required ) ;
106+
133107 const onChangeHandler = useEvent ( ( val : any , dontTouch : boolean ) => {
134108 if ( ! form ) return ;
135109
0 commit comments