You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Formik提交尝试时所有字段touched被自动设为true触发异常警告问题

Formik 提交时全字段被标记为touched问题解决方案
  • 检查提交回调内的setTouched调用
    很多开发者会在提交前为了展示全量校验错误,手动传入完整的字段对象给setTouched,如下方错误写法:
    const submitHandler = (values, actions) => {
      // 错误:传入了所有字段的touched配置
      actions.setTouched({
        name: true,
        phone: true,
        email: true
      })
      // 提交逻辑
    }
    
    仅需传入你需要标记为touched的字段即可,不需要全量传入。
  • 检查Formik初始化配置
    确认是否开启了validateOnMount配置项,该配置开启后会在组件挂载时自动将所有字段标记为touched并触发校验,将该配置设为false即可解决。
  • 检查自定义输入组件的事件绑定
    如果你自己封装了适配Formik的输入组件,确认是否在onChange/onBlur事件中错误调用了全局setTouched更新所有字段的touched状态,而非仅更新当前绑定字段的状态。
  • 检查是否直接修改了touched状态
    Formik的状态是immutable的,如果你直接通过formik.touched.xx = true的方式修改状态而非调用setTouched方法更新,会导致状态引用异常,意外将所有字段的touched值变为true。

内容的提问来源于stack exchange,提问作者Billies Wesley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 12:51:02