1
1
import { useEffect , useMemo , useState } from 'react' ;
2
2
3
3
import { ValidateTrigger } from '../../../../shared/index' ;
4
- import { useEvent , useIsFirstRender } from '../../../../_internal/index' ;
4
+ import { useEvent } from '../../../../_internal/index' ;
5
5
import { useFormProps } from '../Form' ;
6
6
import { FieldTypes } from '../types' ;
7
7
import { delayValidationRule } from '../validation' ;
@@ -47,7 +47,6 @@ export function useField<T extends FieldTypes, Props extends CubeFieldProps<T>>(
47
47
props = useFormProps ( props ) ;
48
48
49
49
let {
50
- defaultValue,
51
50
id,
52
51
idPrefix,
53
52
name,
@@ -60,15 +59,9 @@ export function useField<T extends FieldTypes, Props extends CubeFieldProps<T>>(
60
59
showValid,
61
60
shouldUpdate,
62
61
} = props ;
63
-
64
- if ( rules && rules . length && validationDelay ) {
65
- rules . unshift ( delayValidationRule ( validationDelay ) ) ;
66
- }
67
-
68
62
const nonInput = ! name ;
69
63
const fieldName : string = name != null ? name : '' ;
70
64
71
- const isFirstRender = useIsFirstRender ( ) ;
72
65
let [ fieldId , setFieldId ] = useState (
73
66
id || ( idPrefix ? `${ idPrefix } _${ fieldName } ` : fieldName ) ,
74
67
) ;
@@ -95,41 +88,22 @@ export function useField<T extends FieldTypes, Props extends CubeFieldProps<T>>(
95
88
96
89
let field = form ?. getFieldInstance ( fieldName ) ;
97
90
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
-
114
91
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 ) ;
126
94
}
95
+ }
96
+
97
+ if ( field && field . rules !== rules ) {
98
+ field . rules = rules ;
127
99
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 ) ) ;
130
102
}
131
103
}
132
104
105
+ let isRequired = rules && ! ! rules . find ( ( rule ) => rule . required ) ;
106
+
133
107
const onChangeHandler = useEvent ( ( val : any , dontTouch : boolean ) => {
134
108
if ( ! form ) return ;
135
109
0 commit comments