validateRules: { certno: [ { required: true, message: '证件号码不能为空' }, { validator: (rule, value, callback) => { const result = verify(value) if (result.status === 0) { callback() } else { callback(new Error(result.msg)) } }, message: '请输入正确的身份证号码' } ], name: [ { required: true, message: '姓名不可为空' } ], empName: [ { required: true, message: '单位名称不可为空' } ], empCode: [ { required: true, message: '统一信用代码不能为空' } ], reason: [ { required: true, message: '失信原因不能为空' } ] } 改用 Promise 写
时间: 2024-02-10 07:20:07 浏览: 137
好的,您可以将 `validator` 中的 `callback` 改为返回 `Promise`,如下所示:
```javascript
validateRules: {
certno: [
{ required: true, message: '证件号码不能为空' },
{
validator: (rule, value) => {
return new Promise((resolve, reject) => {
const result = verify(value);
if (result.status === 0) {
resolve();
} else {
reject(new Error(result.msg));
}
});
},
message: '请输入正确的身份证号码',
},
],
name: [
{
required: true,
message: '姓名不可为空',
},
],
empName: [
{
required: true,
message: '单位名称不可为空',
},
],
empCode: [
{
required: true,
message: '统一信用代码不能为空',
},
],
reason: [
{
required: true,
message: '失信原因不能为空',
},
],
};
```
这里使用了 `Promise` 对象封装异步验证逻辑,`resolve()` 表示验证通过,`reject()` 表示验证失败并返回错误信息。这样,您就可以像下面这样使用 `async/await` 或者 `.then()` 处理验证结果:
```javascript
// 使用 async/await 处理表单验证
async function handleSubmit() {
try {
await form.validateFields();
// 表单验证通过
} catch (error) {
// 表单验证失败
}
}
// 使用 .then() 处理表单验证
form
.validateFields()
.then(() => {
// 表单验证通过
})
.catch((error) => {
// 表单验证失败
});
```
阅读全文