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

Formik:isInitialValid已弃用,替换validateOnMount报错且未找到该属性

嗨,我来帮你解决这个Formik的问题~

你遇到的isInitialValid弃用警告确实是Formik官方的更新要求,而你找不到validateOnMount或者替换后报错,大概率是版本或使用方式的问题,下面给你一步步的解决方案:

解决步骤

1. 先确认你的Formik版本

validateOnMount是Formik v2.x版本才新增的配置项,如果你还在使用v1.x的旧版本,自然找不到这个属性。先检查当前版本:

npm list formik

如果版本低于v2,建议升级到最新稳定版:

npm install formik@latest

2. 正确用validateOnMount实现初始无效

你原来设置isInitialValid: false的核心需求是让表单一开始处于无效状态。启用validateOnMount: true后,Formik会在组件挂载时立即根据你的validationSchema执行验证,如果初始值不符合校验规则,表单就会自动变成无效状态,完美替代原来的效果。

修改后的代码如下:

const formik = useFormik({
  initialValues,
  validateOnMount: true, // 开启挂载时自动验证
  validationSchema,
  onSubmit: (values, actions) => {
    console.log(JSON.stringify(values, null, 2));
    // 如果需要控制提交状态,记得用actions.setSubmitting(false)
  },
});

小提醒:你之前的onSubmit回调写了第二个参数errors,这其实是不对的——Formik的onSubmit第二个参数是actions对象(包含setSubmitting、resetForm等方法),errors可以直接从formik.errors获取,建议修正这个写法哦。

3. 备选方案:用initialErrors强制初始无效

如果你不想在挂载时就跑完整的验证,只是想单纯让表单一开始处于无效状态,可以手动设置initialErrors为一个非空对象(哪怕是空对象也行):

const formik = useFormik({
  initialValues,
  initialErrors: {}, // 强制表单初始为无效状态
  validationSchema,
  onSubmit: (values, actions) => {
    console.log(JSON.stringify(values, null, 2));
  },
});

这种方式不会触发初始验证,只是让Formik认为表单一开始就存在错误,从而标记为无效。

常见坑点排查

如果升级到v2后还是提示找不到validateOnMount,先检查拼写:必须是驼峰式的validateOnMount,首字母小写,不要写成ValidateOnMount或者其他错误拼写哦。

内容的提问来源于stack exchange,提问作者Hamid Shoja

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:16:12