【发布时间】:2019-04-10 21:14:47
【问题描述】:
我正在尝试修复表单中的错误。该表单是使用 Formik 和一个名为 GenericForm 的自定义反应组件构建的,该组件基本上处理验证并将对象数组映射到表单子组件渲染中。
const advancedFields = [
{
label: "Power Factor",
id: "powerFactor",
type: "number",
value: "",
isRequired: useAdvancedOptions,
},
{
label: "Efficiency",
id: "efficiency",
type: "number",
value: "",
isRequired: useAdvancedOptions,
},
];
变量 useAdvancedOptions 是组件状态的一部分,使用新的 react hook 和 Switch 组件进行更新。
<FormControlLabel control={ <Switch onChange={
() => setUseAdvancedOptions(!useAdvancedOptions)
}color={"primary"}/>}label="Advanced Options"/>
所以错误...当我使用开关打开和关闭高级选项时,如果已触摸该字段,则提交按钮将不会验证两个高级字段中是否没有值,即使字段有已从表单中排除。
当我使用 Chrome 调试器并检查字段对象内的变量 useAdvancedOptions 时,isRequired 的布尔值似乎正在按预期更新,所以我不确定为什么按钮仍在尝试要求该字段。
【问题讨论】:
-
Formik 的这种行为似乎是负责任的github.com/jaredpalmer/formik/issues/1173
标签: material-ui react-hooks formik