Skip to content

Commit 5bdd6f4

Browse files
committed
fix: filter invalid form items #4435
1 parent 5409ce5 commit 5bdd6f4

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

components/form/FormItem.tsx

+25-10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { PropType, ExtractPropTypes, ComputedRef } from 'vue';
1+
import { PropType, ExtractPropTypes, ComputedRef, watch } from 'vue';
22
import { defineComponent, computed, nextTick, ref, watchEffect, onBeforeUnmount } from 'vue';
33
import cloneDeep from 'lodash-es/cloneDeep';
44
import PropTypes from '../_util/vue-types';
@@ -271,16 +271,31 @@ export default defineComponent({
271271
clearValidate,
272272
resetField,
273273
});
274-
formContext.addField(eventKey, {
275-
fieldValue,
276-
fieldId,
274+
let registered = false;
275+
watch(
277276
fieldName,
278-
resetField,
279-
clearValidate,
280-
namePath,
281-
validateRules,
282-
rules: rulesRef,
283-
});
277+
val => {
278+
if (val) {
279+
if (!registered) {
280+
registered = true;
281+
formContext.addField(eventKey, {
282+
fieldValue,
283+
fieldId,
284+
fieldName,
285+
resetField,
286+
clearValidate,
287+
namePath,
288+
validateRules,
289+
rules: rulesRef,
290+
});
291+
}
292+
} else {
293+
registered = false;
294+
formContext.removeField(eventKey);
295+
}
296+
},
297+
{ immediate: true },
298+
);
284299
onBeforeUnmount(() => {
285300
formContext.removeField(eventKey);
286301
});

0 commit comments

Comments
 (0)