Formik运行验证时,将验证我的所有字段。 我的一项操作确实非常昂贵(数据库查找)。 如果它没有更改,我不想运行此验证。我该如何实现?
我正在使用withFormik高阶组件。
我考虑的一个选项是跟踪当前值和最后一个经过验证的值。如果不同,则运行验证。可能是基础组件中的const [lastValidated, setLastValidated] = useState();
。但是我不确定如何访问底层组件的状态。
const Guest = (props) => {
// maybe lastValidated here?
};
const formikEnhancer = withFormik({
validate: (values, props) =>
new Promise((resolve, reject) => {
const errors = {};
// Runs validation on all fields
}
});
export default formikEnhancer(Guest);
答案 0 :(得分:0)
在这种情况下,您可以考虑使用field-level validation。它可以为您提供更大的灵活性来检查此特定输入中的更改,因此您可以在运行昂贵的操作之前保释。