Skip to content

Commit 37746e8

Browse files
authored
fix: invalidate rule should not failed (#523)
1 parent 582aa84 commit 37746e8

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

src/Field.tsx

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -373,14 +373,16 @@ class Field extends React.Component<InternalFieldProps, FieldState> implements F
373373

374374
let filteredRules = this.getRules();
375375
if (triggerName) {
376-
filteredRules = filteredRules.filter((rule: RuleObject) => {
377-
const { validateTrigger } = rule;
378-
if (!validateTrigger) {
379-
return true;
380-
}
381-
const triggerList = toArray(validateTrigger);
382-
return triggerList.includes(triggerName);
383-
});
376+
filteredRules = filteredRules
377+
.filter(rule => rule)
378+
.filter((rule: RuleObject) => {
379+
const { validateTrigger } = rule;
380+
if (!validateTrigger) {
381+
return true;
382+
}
383+
const triggerList = toArray(validateTrigger);
384+
return triggerList.includes(triggerName);
385+
});
384386
}
385387

386388
const promise = validateRules(

tests/validate.test.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -738,5 +738,17 @@ describe('Form.Validate', () => {
738738
await changeValue(getField(wrapper, 0), ['light']);
739739
matchError(wrapper, false);
740740
});
741+
742+
it('filter empty rule', async () => {
743+
const wrapper = mount(
744+
<div>
745+
<Form>
746+
<InfoField name="user" rules={[{ required: true }, null]} />
747+
</Form>
748+
</div>,
749+
);
750+
await changeValue(wrapper, '');
751+
matchError(wrapper, true);
752+
});
741753
});
742754
/* eslint-enable no-template-curly-in-string */

0 commit comments

Comments
 (0)