1. 先在表单组件配置onFinishFailed方法
onFinishFailed={(errInfo) => {
console.log("🚀 ~ file: index.tsx ~ line 474 ~ errInfo", errInfo)
let fields: string = 'none';
const { errorFields } = errInfo;
fields = errorFields[0]['name'][0] as string;
scrollToError(fields);
}}
2. 再创建scrollToError方法
const scrollToError = (fields: any) => {
const labels = document.querySelectorAll('label');
const arr = [];
for (let i = 0; i < labels.length; i++) {
if (labels[i].getAttributeNode('for')) {
const label = labels[i]?.getAttributeNode('for')?.value;
arr.push(label);
}
}
const errLabel = arr.filter((label) => {
return label === fields;
});
let errLabelDom;
for (let i = 0; i < labels.length; i++) {
if (labels[i]?.getAttributeNode('for')?.value === errLabel[0]) {
errLabelDom = labels[i];
}
errLabelDom?.scrollIntoView(true);
let scrollTop =
document.documentElement.scrollTop || document.body.scrollTop;
window.scrollTo(0, (scrollTop -= 118));
}
};
3. 调用formRef.current?.submit()方法的时候就会自动跳到报错的表单项