Skip to content

Commit dcb5cf5

Browse files
authored
chore: bump (#428)
1 parent 0be53a8 commit dcb5cf5

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
},
5151
"dependencies": {
5252
"@babel/runtime": "^7.8.4",
53-
"async-validator": "^4.0.2",
53+
"async-validator": "^4.1.0",
5454
"rc-util": "^5.8.0"
5555
},
5656
"devDependencies": {

src/utils/validateUtil.ts

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ function replaceMessage(template: string, kv: Record<string, string>): string {
2525
});
2626
}
2727

28+
const CODE_LOGIC_ERROR = 'CODE_LOGIC_ERROR';
29+
2830
async function validateRule(
2931
name: string,
3032
value: StoreValue,
@@ -39,6 +41,18 @@ async function validateRule(
3941
// https://github.com/react-component/field-form/issues/313
4042
delete (cloneRule as any).ruleIndex;
4143

44+
if (cloneRule.validator) {
45+
const originValidator = cloneRule.validator;
46+
cloneRule.validator = (...args) => {
47+
try {
48+
return originValidator(...args);
49+
} catch (error) {
50+
console.error(error);
51+
return Promise.reject(CODE_LOGIC_ERROR);
52+
}
53+
};
54+
}
55+
4256
// We should special handle array validate
4357
let subRuleField: RuleObject = null;
4458
if (cloneRule && cloneRule.type === 'array' && cloneRule.defaultField) {
@@ -59,15 +73,14 @@ async function validateRule(
5973
await Promise.resolve(validator.validate({ [name]: value }, { ...options }));
6074
} catch (errObj) {
6175
if (errObj.errors) {
62-
result = errObj.errors.map(({ message }, index) =>
63-
// Wrap ReactNode with `key`
64-
React.isValidElement(message)
65-
? React.cloneElement(message, { key: `error_${index}` })
66-
: message,
67-
);
68-
} else {
69-
console.error(errObj);
70-
result = [messages.default];
76+
result = errObj.errors.map(({ message }, index: number) => {
77+
const mergedMessage = message === CODE_LOGIC_ERROR ? messages.default : message;
78+
79+
return React.isValidElement(mergedMessage)
80+
? // Wrap ReactNode with `key`
81+
React.cloneElement(mergedMessage, { key: `error_${index}` })
82+
: mergedMessage;
83+
});
7184
}
7285
}
7386

0 commit comments

Comments
 (0)