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

React中Ant Design Form提交错误凭证时页面重载问题咨询

登录错误时页面重载的问题解决

问题出在登录请求失败时未正确捕获错误,导致浏览器触发了表单的默认提交行为。Ant Design Form默认会阻止表单默认提交,但如果onFinish回调中存在未捕获的Promise拒绝或同步错误,就会触发页面重载。

修复方案

1. 异步捕获错误(推荐)

把onSubmit改成异步函数,用try/catch包裹请求逻辑,确保所有错误都被内部处理:

const onSubmit = async (values: LoginValues) => {
  try {
    await loginMutation.mutateAsync(values);
    handleLoginSuccess();
  } catch (error) {
    handleLoginFailure(error);
  }
};

2. 检查handleLoginFailure函数

确认你的handleLoginFailure没有重新抛出未处理的错误,比如:

const handleLoginFailure = (error: Error) => {
  // 这里写你的错误处理逻辑,比如显示错误提示
  console.error('登录失败:', error);
  // 不要在这里抛出未捕获的错误
};

3. 兜底:手动阻止表单默认提交(可选)

如果前两种方法无效,可以在Form组件上添加onSubmit事件强制阻止默认行为:

<Form<LoginValues>
  name="loginForm"
  form={form}
  onFinish={onSubmit}
  onSubmit={(e) => e.preventDefault()}
  initialValues={{
    remember: false,
  }}
>

核心逻辑

Ant Design Form的onFinish仅在回调执行无错误时才会阻止默认提交。一旦回调中出现未捕获的错误,浏览器就会执行原生表单提交,导致页面重载。所以确保所有错误都被捕获处理是关键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 18:46:04