<FormItem label="可申请范围">
{getFieldDecorator('canApplyScope', {
// valuePropName: "checked",
initialValue: undefined,
rules: [
{
required: true, message: '请选择申请范围', whitespace: true,
type: 'object',//用这个属性设置内建校验类型,默认是string。
validator: (rule: any, value: Quota.FCycleValueMap, callback: any) => {
console.log(996, value)
if (!value) { //一开始少了这一步,导致form.validateFields (()=>{})根本就不会执行
callback('请选择申请范围')
}
else if (value && value.checkedList.length == 0) {
callback('请选择申请范围');
} else {
callback()
// return
}
}
},
],
})(
<CheckGroup></CheckGroup>
)}
</FormItem>
调用的地方为
function updateData(
form: WrappedFormUtils,
// whiteList: Global.CUserItem[],
quto: Quota.FQuotaDetail,
) {
console.log(form.validateFields)
form.validateFields((errs, values) => {
//一开始validator逻辑没有写全,这里始终进不来
if (errs) return;
ConfirmModal({
title: '数据编辑',
content: '确认更新数据信息!',
onOk: () =>
new Promise(async resolve => {
const ret = await dispatch({
type: 'quota/updateQuotaDetail',
payload: { ...quotaDetail, ...values, whiteList },
});
resolve();
if (ret) {
message.success('数据编辑成功!');
getQuotaDetail();
}
}),
});
});
}
以下所看内容给了指引
https://www.jianshu.com/p/adec74c4097a
关于antd 表单validateFields validateFieldsAndScroll方法不执行的一个可能原因
_执念__关注
0.242019.07.27 16:39:51字数 85阅读 1,870
在使用antd form组件的的validateFields或者validateFieldsAndScroll方法时如果它没有进入方法而是直接跳过了方法,那不妨看看自定义验证方法validator代码块里是否有某一条分支没有执行 callback 函数。官方规定:自定义校验 callback 必须被调用。