我不知道如何在我的应用程序中使用formik创建一个可以滚动到错误的组件,因为我的窗体很大,我想滚动到错误输入,使应用程序更好。
import React, { useEffect } from 'react';
import { useFormikContext } from 'formik';
const ScrollToError = () => {
const formik = useFormikContext();
const submitting = formik?.isSubmitting;
useEffect(() => {
if (formik?.errors && submitting) {
const keys = Object.keys(formik.errors);
const firstErrorKey = keys[0];
const firstError = formik?.getFieldProps(firstErrorKey)?.ref?.current;
if (firstError) {
firstError.focus();
}
}
}, [formik, submitting]);
return null;
};
export default ScrollToError;
1条答案
按热度按时间bf1o4zei1#
您需要存储每个输入的y位置和对视图的引用。
要获取y位置,可以使用 onLayout 属性。
电子邮件字段示例:
当你得到一个错误(你的 if(firstError))时,你可以向下滚动到该字段: