@@ -119,19 +119,33 @@ function useForm(
119
119
clearValidate : ( names ?: namesType ) => void ;
120
120
} {
121
121
const initialModel = cloneDeep ( unref ( modelRef ) ) ;
122
- let validateInfos : validateInfos = { } ;
122
+ const validateInfos = reactive < validateInfos > ( { } ) ;
123
123
124
124
const rulesKeys = computed ( ( ) => {
125
125
return Object . keys ( unref ( rulesRef ) ) ;
126
126
} ) ;
127
127
128
- rulesKeys . value . forEach ( key => {
129
- validateInfos [ key ] = {
130
- autoLink : false ,
131
- required : isRequired ( unref ( rulesRef ) [ key ] ) ,
132
- } ;
133
- } ) ;
134
- validateInfos = reactive ( validateInfos ) ;
128
+ watch (
129
+ rulesKeys ,
130
+ ( ) => {
131
+ const newValidateInfos = { } ;
132
+ rulesKeys . value . forEach ( key => {
133
+ newValidateInfos [ key ] = validateInfos [ key ] || {
134
+ autoLink : false ,
135
+ required : isRequired ( unref ( rulesRef ) [ key ] ) ,
136
+ } ;
137
+ delete validateInfos [ key ] ;
138
+ } ) ;
139
+ for ( const key in validateInfos ) {
140
+ if ( Object . prototype . hasOwnProperty . call ( validateInfos , key ) ) {
141
+ delete validateInfos [ key ] ;
142
+ }
143
+ }
144
+ Object . assign ( validateInfos , newValidateInfos ) ;
145
+ } ,
146
+ { immediate : true } ,
147
+ ) ;
148
+
135
149
const resetFields = ( newValues : Props ) => {
136
150
Object . assign ( unref ( modelRef ) , {
137
151
...cloneDeep ( initialModel ) ,
@@ -251,6 +265,9 @@ function useForm(
251
265
} ,
252
266
! ! option . validateFirst ,
253
267
) ;
268
+ if ( ! validateInfos [ name ] ) {
269
+ return promise . catch ( ( e : any ) => e ) ;
270
+ }
254
271
validateInfos [ name ] . validateStatus = 'validating' ;
255
272
promise
256
273
. catch ( ( e : any ) => e )
@@ -327,7 +344,9 @@ function useForm(
327
344
validate ( names , { trigger : 'change' } ) ;
328
345
oldModel = cloneDeep ( model ) ;
329
346
} ;
347
+
330
348
const debounceOptions = options ?. debounce ;
349
+
331
350
watch (
332
351
modelRef ,
333
352
debounceOptions && debounceOptions . wait
0 commit comments