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

Formik+Yup表单校验后onSubmit触发POST请求发邮件失效问题排查

核心问题分析

onSubmit无法触发绝大多数情况是Yup校验未通过,但你代码里的错误提示逻辑写错了,看不到校验失败的提示,误以为是onSubmit没触发。


具体问题和解决方法

1. 错误提示逻辑错误(核心诱因)

你代码里email、subject字段的错误展示条件都错误写成了判断formik.errors.fullName,也就是说就算这两个字段不符合你的Yup校验规则,页面上也不会展示对应错误,而Formik默认在校验未通过时会直接阻止onSubmit执行。

修正对应位置的错误提示代码即可(额外添加touched判断,避免页面刚加载就显示错误):

  • fullName字段错误提示:
{formik.touched.fullName && formik.errors.fullName ? <div>{formik.errors.fullName}</div> : null}
  • email字段错误提示:
{formik.touched.email && formik.errors.email ? <div>{formik.errors.email}</div> : null}
  • subject字段错误提示:
{formik.touched.subject && formik.errors.subject ? <div>{formik.errors.subject}</div> : null}

2. 快速排查方法

如果修改完错误提示还是找不到问题,可以先临时注释掉useFormik配置里的validationSchema参数,测试提交是否能正常触发:

const formik = useFormik({
  initialValues,
  // 临时注释校验规则测试提交逻辑
  // validationSchema,
  onSubmit,
})

如果注释后onSubmit可以正常执行,就可以确认是你的Yup校验规则有不符合预期的地方,再调整对应规则即可。

3. 额外注意点

你代码里的留言字段名拼写为massage(正确拼写应为message),如果后端接口要求字段名为message的话,提交后后端会拿不到对应值,记得对应修改前后端的字段名即可。


内容的提问来源于stack exchange,提问作者Mohammed Himaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:12:01