Formik:手动设置字段错误更改下拉菜单,根据情况



默认情况下,Formik会在您触摸它们(.touched)时检查字段。您还可以使用initialErrors={{..}}初始化错误。

我有一个不同的情况:更改下拉菜单到某个项目,我需要手动设置一个字段错误,如果某个条件为真。我在调试器中验证了下面的语句,并执行了setFieldError。但它不起作用:当我打印{JSON.stringify(errors)}以查看当前表单错误时,该字段而不是在地图中有一个错误

<Form.Control as="select"
custom
id="approverDropDown"
name="processAction"
value={values.processAction}
onChange={e => {
// Call default Formik handleChange()
handleChange(e);
// If a specific item is selected, start condition check for custom error
if (parseInt(e.target.value) === 2) {
// Set Inactive Default 2nd Approver error if applicable
// This gets here, and the If is executed
if (inactiveDefaultSecondApprover) {
setFieldError('secondApproverId', 'Selected Approver is no longer eligible. Please choose a different Approver to continue.', true);
}
}

setFieldValue通常从这些更改处理程序中工作,但setFieldError不能。我也尝试了setErrors({..}),这也不起作用。有人写道,setFieldError不应该在更改处理中使用:https://github.com/jaredpalmer/formik/issues/1278#issuecomment-461036355但是如何解决这个问题呢?

我唯一能做的就是setFieldValue('myfield', null);,然后我有验证,检查该字段的NULL值。我不能直接使用setFieldError

相关内容

最新更新