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

React中event.preventDefault()无效且控制台无法获取值,请问哪里出错了?

错误原因
  • 核心错误是onSubmit事件的绑定位置有误:原生表单的submit事件只会在<form>元素本身触发,你当前将onSubmit={formSubmissionHandler}绑定到了form内部的div节点上,触发表单提交时处理函数根本不会执行,自然不会运行event.preventDefault()阻止默认跳转,也不会输出控制台日志。
  • 额外可优化点:你在提交处理函数中重复声明了和上层state同名的enteredName变量,虽然不会直接导致功能异常,但容易引发作用域混淆,建议修改局部变量名避免冲突。
修复方案

将onSubmit属性移到<form>标签上即可,修改后的代码片段如下:

return (
  {/* 将onSubmit绑定到form元素上 */}
  <form onSubmit={formSubmissionHandler}>
    <div className="form-control">
      <label htmlFor="name">Your Name</label>
      <input
        ref={nameInputRef}
        type="text"
        id="name"
        onChange={nameInputChangeHandler}
      />
    </div>
    <div className="form-actions">
      <button>Submit</button>
    </div>
  </form>
);
补充说明

该方案同时兼容按钮点击提交、输入框回车提交两种原生表单交互场景,是最符合规范的实现方式。如果确实需要绑定点击事件到提交按钮上,需要给按钮添加type="button"属性,或者在点击处理函数中也调用event.preventDefault()阻止默认提交行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:15:03