【问题标题】:How to fix validation of optional fields using Switch component (material-ui) with Formik如何使用带有 Formik 的 Switch 组件(material-ui)修复可选字段的验证
【发布时间】: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 的布尔值似乎正在按预期更新,所以我不确定为什么按钮仍在尝试要求该字段。

【问题讨论】:

标签: material-ui react-hooks formik


【解决方案1】:

验证被破坏,当它读取formic中存在的值之一并对其进行过滤时,采用已删除高级选项值的迭代会将null带入switch case并失败。如果迭代过滤器导致 null,我在 switch 语句之前写了一个返回条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 2021-10-07
    • 1970-01-01
    • 2022-01-01
    • 2021-07-14
    • 2019-10-05
    • 1970-01-01
    • 2021-05-25
    相关资源
    最近更新 更多