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

React+TypeScript表单提交报错:EventTarget无法赋值给HTMLFormElement

解决TypeScript表单提交时的类型错误

你遇到的问题是因为event.target的类型是EventTarget,而FormData构造函数需要的是HTMLFormElement类型的参数。虽然你给FormEvent指定了HTMLFormElement泛型,但target可能指向表单内的子元素(比如触发提交的按钮),导致TypeScript无法确定它的具体类型。

最优解决方案:使用event.currentTarget

currentTarget始终指向绑定事件处理函数的元素(也就是你的<Form>组件对应的原生表单元素),它的类型会被TypeScript正确推断为HTMLFormElement,直接替换即可:

const handleSubmit = async (event: FormEvent<HTMLFormElement>) => {
    event.preventDefault();
    const data = new FormData(event.currentTarget); // 替换为currentTarget
    const email = data.get('email')!;
    const password = data.get('password')!;

    await mutateAsync({ email, password });
    history.push('/dashboard');
};

备选方案:类型断言(不推荐)

如果因为某些原因必须用target,可以手动添加类型断言告诉TypeScript它的具体类型,但这种方式不如currentTarget安全,因为如果事件冒泡到其他元素可能会出错:

const data = new FormData(event.target as HTMLFormElement);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:55:15