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

Formik表单提交按钮点击无响应问题排查与修复

问题排查与修复方案

核心问题1:提交按钮触发逻辑冲突

你的提交按钮同时设置了type="submit"和onClick={handleSubmit},这会打乱Formik的内部提交流程。点击按钮时,既触发表单默认的submit事件,又手动调用handleSubmit,导致handleFormSubmit无法正常触发。

核心问题2:潜在的验证拦截(可选排查点)

如果userSchema的验证规则被修改,或表单字段存在未通过验证的情况(比如必填项为空、格式不匹配),Formik会自动阻止提交,handleFormSubmit也不会执行。


修复代码

步骤1:修正提交按钮

移除按钮上的onClick={handleSubmit},仅保留type="submit":

<Button color="success" variant="outlined" type="submit">Enregistrer</Button>

步骤2:验证表单规则(可选)

检查userSchema的验证逻辑:

  • 确认必填字段都配置了required规则
  • 日期、手机号等格式验证规则是否与输入值匹配
  • 可临时注释validationSchema={userSchema},测试是否能正常提交

步骤3:优化初始值初始化(可选)

避免初始值结构不匹配导致的表单状态异常:

const [initialValues, setInitialValues] = useState(() => {
  if (!user) return initialState;
  return {
    ...user,
    birthday: dateFormat(user.birthday),
    contractStartDate: dateFormat(user.contractStartDate),
    contractEndDate: dateFormat(user.contractEndDate),
  };
});

useEffect(() => {
  if (!user) return;
  const formattedResponse = {
    ...user,
    birthday: dateFormat(user.birthday),
    contractStartDate: dateFormat(user.contractStartDate),
    contractEndDate: dateFormat(user.contractEndDate),
  };
  setInitialValues(formattedResponse);
}, [user]);

测试验证

  1. 点击提交按钮,查看控制台是否输出"asslema"和"besslema"
  2. 若仍无法触发,检查浏览器控制台Elements面板,确认表单无嵌套、按钮在表单内部
  3. 查看Formik的touched和errors对象,确认是否存在未通过验证的字段

内容的提问来源于stack exchange,提问作者Cheher Kallebi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 23:15:39